java - 正则表达式在 Java 中未按预期工作

标签 java regex

我使用的正则表达式在 RegexBuddy 中有效,但在 Java 中无效。

这是我的正则表达式:(?<=(files)\\s)(.*)

这是我正在测试的字符串:"–files /root1/file1.dat;/root/file2.txt"

在 RegexBuddy 中,它返回:"/root1/file1.dat;/root/file2.txt"但在 Java 中它只返回字面意思 files .

为什么这不起作用?

最佳答案

尝试这个正则表达式:

(?<=files\\s)(.*)

编辑添加说明

我猜你正在采取group(1)

你的正则表达式:(?<=(files)\\s)(.*)有三个比赛组:

group 0:/root1/file1.dat;/root/file2.txt
group 1:files
group 2:/root1/file1.dat;/root/file2.txt

我的:(?<=files\\s)(.*)有两个:

group 0:/root1/file1.dat;/root/file2.txt
group 1:/root1/file1.dat;/root/file2.txt

look-behind中的组实际上是没有必要的,你的(.*)变成group(2)如果你想得到`/root1.....$',你不必分组,

(?<=files\\s).*

会完成这项工作。

无论如何,如果您想坚持使用正则表达式,请使用 group(2)

我希望解释清楚。

关于java - 正则表达式在 Java 中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626448/

相关文章:

java - java输入法——准备面试

java - 比较 Java 中的两个 JsonArray 节点

java - Java 中 for 语句的中断

javascript - 仅当字符串后面没有左方括号时才替换字符串,即 [

Python 的正则表达式 findall 不返回 Unicode 文本的所有匹配项

regex - .htaccess 重定向字符串之前的任何字符

java - Netbeans 中服务器库和类库的区别?

java - 在相机中移动图 block map

Python:使用列表中的分隔符拆分字符串

java - 如何单独解析并执行文件中的所有 SQL 语句?