我使用的正则表达式在 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/