Tag: 正则表达式

正则表达式删除两个字符之间的子字符串

我想从正常表达式的字符串中删除<和>之间的任何内容,包括( <和> )。 这里有几个例子。 Hiand它应该给Hiand rekha@gmail.com然后它应该给rekha@gmail.com Reva Patel应该给Reva Patel revapatel@gmail.com,rekha@gmail.com它应该给revapatel@gmail.com,rekha@gmail.com 有人可以给我一个正则表达式吗? 我需要用Java实现它。

Java正则表达式首先匹配

如何告诉以下正则表达式只找到FIRST匹配? 以下代码继续在字符串中查找所有可能的正则表达式。 即我只寻找子串的索引(200-800;50] public static void main(String[] args) { String regex = “(\\[|\\().+(\\]|\\))”; String testName= “DCGRD_(200-800;50]MHZ_(PRE|PST)_(TESTMODE|REG_3FD)”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(testName); boolean found = false; while (matcher.find()) { System.out.format(“I found the text” + ” \”%s\” starting at ” + “index %d and ending at index %d.%n”, matcher.group(), matcher.start(), matcher.end()); found = true; […]

Java中的非贪婪正则表达式

我有下一个代码: public static void createTokens(){ String test = “test is a word word word word big small”; Matcher mtch = Pattern.compile(“test is a (\\s*.+?\\s*) word (\\s*.+?\\s*)”).matcher(test); while (mtch.find()){ for (int i = 1; i <= mtch.groupCount(); i++){ System.out.println(mtch.group(i)); } } } 并有下一个输出: word w 但在我看来,它一定是: word word 有人请解释我为什么这样?

替换捕获组

如果我有一个带有捕获组的正则表达式,例如foo(_+f) 。 如果我将其与字符串匹配,并希望用baz替换所有匹配中的第一个捕获组,以便这样做 foo___f blah foo________f 转换为: foobaz blah foobaz 使用标准库似乎没有任何简单的方法。 如果我使用Matcher.replaceAll(),这将替换整个模式的所有匹配并将字符串转换为 baz blah baz 显然我可以迭代匹配,存储每个捕获组的开始和结束索引,然后返回并替换它们,但是有更简单的方法吗? 谢谢,唐

正则表达式\\ s *,\\ s *做什么?

我想知道这行代码对名为surl的字符串中包含的url做了什么? String[] stokens = surl.split(“\\s*,\\s*”); 让我们假装这是surl =“http:// myipaddress:8080 / Map / MapServer.html”会是什么?

在Java中执行大量字符串替换的最快方法

我必须编写某种解析器来获取String并用其他字符替换某些字符集。 代码如下所示: noHTMLString = noHTMLString.replaceAll(“”, “\n”); noHTMLString = noHTMLString.replaceAll(“”, “\n\n”); noHTMLString = noHTMLString.replaceAll(“”, “\n\n”); //here goes A LOT of lines like these ones 该函数非常长并且执行许多字符串替换。 这里的问题是它需要花费很多时间,因为它被称为很多次的方法,从而降低了应用程序的性能。 我在这里阅读了一些关于使用StringBuilder作为替代方案的线程,但它缺少ReplaceAll方法,并且正如此处所述, string.replaceAll()性能是否受到字符串不变性的影响? String类中的replaceAll方法适用于 Match Pattern&Matcher和Matcher.replaceAll()使用StringBuilder存储最终返回的值,因此我不知道切换到StringBuilder是否会真正减少执行替换的时间。 您是否知道以快速方式快速完成大量String替换? 你对这个问题有什么建议吗? 谢谢。 编辑 :我必须创建一个报告,其中包含一些带有html文本的字段。 对于每一行,我正在调用替换这些字符串中的所有html标记和特殊字符的方法。 使用完整报告,解析所有文本需要3分钟以上。 问题是我必须经常调用该方法

Java Regex模式匹配在任何字符序列之后首次出现“边界”

我想设置一个模式,它将找到一个受第一次出现的“边界”限制的捕获组。 但现在使用了最后一个边界。 例如: String text = “this should match from A to the first B and not 2nd B, got that?”; Pattern ptrn = Pattern.compile(“\\b(A.*B)\\b”); Matcher mtchr = ptrn.matcher(text); while(mtchr.find()) { String match = mtchr.group(); System.out.println(“Match = “); } 打印: “Match = ” 我希望它打印: “Match = ” 我需要在模式中做些什么改变?

正则表达式通配符匹配

我有一个大约12万个英语单词的列表(基本上是该语言中的每个单词)。 我需要一个正则表达式,允许使用通配符字符搜索这些单词,也就是*和? 。 几个例子: 如果用户搜索m?st* ,它将匹配例如master或mister或mistery 。 如果用户搜索*ind (任何以ind结尾的单词),它将匹配wind或bind或blind或grind 。 现在,大多数用户(特别是那些不熟悉正则表达式的用户)知道? 是1个字符的替代,而*是0,1个或更多字符的替代。 我绝对想基于此构建我的搜索function。 我的问题是:如何将用户输入的内容(例如m?st* )转换为正则表达式? 我在网上搜索(显然包括这个网站),我找到的所有内容都是试图教我太多的教程或者有些相似的问题,但还不足以为我自己的问题提供答案。 我能弄清楚的是我必须更换? 用. 。 所以m?st*变成m.st* 。 但是,我不知道要替换什么* 。 任何帮助将不胜感激。 谢谢。 PS:我对正则表达式完全陌生。 我知道它们有多么强大,但我也知道它们很难学。 所以我从来没有花时间去做它……

Java中的字符串模式匹配问题

在我使用的程序中 line.replaceAll(“(“, “_”); 我遇到了一个RuntimeException : at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.accept(Unknown Source) at java.util.regex.Pattern.group0(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source) at Processing.processEarly(Processing.java:95) at Processing.main(Processing.java:34) 有什么缘故吗? 我们怎样才能避免呢?

如何在字符串中查找子字符串之前和之后

我有一个字符串说123dance456 ,我需要分成两个字符串,包含子字符串dance之前的第一个子字符串(即123 )和子字符串dance (即456 )。 我需要找到它们并将它们保存在单独的字符串变量中,比如String firstSubString = 123; 和String secondSubString = 456; 。 是否有任何给定的String方法可以做到这一点?