Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中Regexp查找所需的建议_Java_Regex - Fatal编程技术网

Java中Regexp查找所需的建议

Java中Regexp查找所需的建议,java,regex,Java,Regex,我在我的项目中大量使用regexp。我需要一些关于测试字符串的建议: 1 string 3.33 string 1 string -3.33 第2行与此正则表达式匹配,但第3行不匹配 注意:我确实关心行的开头或结尾。因此,上面标记的测试行具有完美的空白 我使用Java作为我的编程语言 你是否逐行测试了文本 然后您可以使用re:\d+\.\d+$匹配您不需要的文本。如果match()返回false,则执行该行 嗯,就

我在我的项目中大量使用regexp。我需要一些关于测试字符串的建议:

1 string 3.33 string 1 string -3.33 第2行与此正则表达式匹配,但第3行不匹配

注意:我确实关心行的开头或结尾。因此,上面标记的测试行具有完美的空白


我使用Java作为我的编程语言

你是否逐行测试了文本

然后您可以使用re:
\d+\.\d+$
匹配您不需要的文本。如果match()返回false,则执行该行

嗯,就像格雷普-v

如果使用grep进行测试:

kent$  cat a
1     string           3.33
      string
      1
      string          -3.33

kent$  grep -Pv '\d+\.\d+$' a
      string
      1

你有逐行测试这篇课文吗

然后您可以使用re:
\d+\.\d+$
匹配您不需要的文本。如果match()返回false,则执行该行

嗯,就像格雷普-v

如果使用grep进行测试:

kent$  cat a
1     string           3.33
      string
      1
      string          -3.33

kent$  grep -Pv '\d+\.\d+$' a
      string
      1
这是一个很好的例子。字符类正好匹配方括号内描述的字符集中的一个字符。你的相当于:

[^!()+.\d]
开头的
^
反转集合,并且
\d
匹配一个数字,就像它在字符类之外一样,但其余字符按字面匹配。换句话说,您告诉它匹配任何一个不是
的字符
+
,或数字

看起来您试图使用消极的前瞻,这是一种有效的方法。如果您只关心行末尾的美元金额,您可以这样做:

^(?!.*\d+\.\d+$).*$
先行查找尝试匹配行末尾的
\d+\.\d+
。如果成功,则整个匹配将失败。否则,
*$
将消耗整行,因此您可以使用Matcher的
group()
方法检索它

这假设您一次只对一行应用正则表达式。如果要在较大的文本中查找匹配行,则应指定多行模式,您可以这样做:

(?m)^(?!.*\d+\.\d+$).*$
这是一个很好的例子。字符类正好匹配方括号内描述的字符集中的一个字符。你的相当于:

[^!()+.\d]
开头的
^
反转集合,并且
\d
匹配一个数字,就像它在字符类之外一样,但其余字符按字面匹配。换句话说,您告诉它匹配任何一个不是
的字符
+
,或数字

看起来您试图使用消极的前瞻,这是一种有效的方法。如果您只关心行末尾的美元金额,您可以这样做:

^(?!.*\d+\.\d+$).*$
先行查找尝试匹配行末尾的
\d+\.\d+
。如果成功,则整个匹配将失败。否则,
*$
将消耗整行,因此您可以使用Matcher的
group()
方法检索它

这假设您一次只对一行应用正则表达式。如果要在较大的文本中查找匹配行,则应指定多行模式,您可以这样做:

(?m)^(?!.*\d+\.\d+$).*$

我认为如果您将示例输入缩进四个空格,以便StackOverflow保留格式,这会有所帮助。这将有助于使你的问题更清楚。另外,你可以试着玩一个网站,比如我或我的第二本,请改进示例文本。我正在尝试放缩进。请允许我找个时间。以下是我能解释的关于缩进和测试字符串的最好解释:测试字符串1:1字符串3.33测试字符串2:[空格]字符串测试字符串3:[空格]1测试字符串4:[空格]字符串-3.33我想如果您将示例输入缩进四个空格,以便StackOverflow保留格式,这会有所帮助。这将有助于使你的问题更清楚。另外,你可以试着玩一个网站,比如我或我的第二本,请改进示例文本。我正在尝试放缩进。请允许我找个时间。以下是我能解释的关于缩进和测试字符串的最好解释:测试字符串1:1字符串3.33测试字符串2:[空格]字符串测试字符串3:[空格]1测试字符串4:[空格]字符串-3.33Kent,实际上这是一个大程序的一部分。我不能按你建议的方式做这件事。谢谢你的建议。肯特,实际上这是一个大项目的一部分。我不能按你建议的方式做这件事。谢谢你的建议。我想,这似乎是个好主意。我一定会试试的。我喜欢你的解释。我会记住这一点,以便进一步使用。谢谢你,艾伦,这个正则表达式正是我想要的。我学到了一些更好的消极前瞻。谢谢你的建议。我想,这似乎是个好主意。我一定会试试的。我喜欢你的解释。我会记住这一点,以便进一步使用。谢谢你,艾伦,这个正则表达式正是我想要的。我学到了一些更好的消极前瞻。谢谢你的建议。