我在Python中有一个正在运行的正则表达式,我正在尝试转换为Java.似乎在实现中存在细微差别.
RegEx试图匹配另一个reg ex.有问题的RegEx是:
/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)
Run Code Online (Sandbox Code Playgroud)
它遇到问题的其中一个字符串是: /\s+/;
reg ex不应该与结尾匹配;.在Python中,RegEx正常工作(并且与结尾不匹配;,但在Java中它确实包括;.
问题:
Vin*_*eet 11
对于一小组案例,Java不会像Python那样解析正则表达式.在这种特殊情况下,嵌套[导致了问题.在Python中,您不需要转义任何嵌套,[但您需要在Java中执行此操作.
原始的RegEx(用于Python):
/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)
Run Code Online (Sandbox Code Playgroud)
固定的RegEx(适用于Java和Python):
/(\\.|[^\[/\\\n]|\[(\\.|[^\]\\\n])*\])+/([gim]+\b|\B)
Run Code Online (Sandbox Code Playgroud)
b/w Java和Python的明显区别在于Java中你需要逃避很多字符.
此外,您可能会遇到匹配方法之间的不匹配,而不是实际正则表达式中的差异:
鉴于Java
String regex, input; // initialized to something
Matcher matcher = Pattern.compile( regex ).matcher( input );
Run Code Online (Sandbox Code Playgroud)
matcher.matches()(也Pattern.matches( regex, input ))匹配整个字符串.它在Python中没有直接的等价物.相同的结果可通过使用能够实现re.match( regex, input )与regex该结尾$.matcher.find()和Python re.search( regex, input )匹配字符串的任何部分.matcher.lookingAt()和Python re.match( regex, input )匹配字符串的开头.有关更多详细信息,请阅读Java的文档Matcher并与Python文档进行比较.
既然你说这不是问题,我决定做一个测试:http://ideone.com/6w61T
看起来java正在做你所需要的(组0,整场比赛,不包含的;).你的问题在别处.
| 归档时间: |
|
| 查看次数: |
9867 次 |
| 最近记录: |