将python regexp转换为java

时间:2016-11-22 11:37:21

标签: java python regex

我知道它已经被问到Here但是我想像在Pshemo建议的那样在java中使用命名组,我无法弄清楚我的正则表达式转换有什么问题:

这是python regexp:

regexp = re.compile(r'(?P<delim>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?P=delim)', re.DOTALL | re.MULTILINE)
matches = regexp.findall(content)

这是我的java转换的regexp:

String regexp = "(?<delim>[^\\w\\n\\\"'])(?<space> ?)(?<quote>[\\\"']).*?(?=quote)(?=delim)";
Pattern pattern = Pattern.compile(regexp, Pattern.DOTALL | Pattern.MULTILINE);
Matcher matcher = pattern.matcher(content);

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您将命名后向引用转换为正向前瞻((?P=quote) =&gt; (?=quote)),而您需要\k<groupname>

String regex = "(?<delim>[^\\w\n\"'])(?<space> ?)(?<quote>[\"']).*?\\k<quote>\\k<delim>";

OCPSoft regex tester测试:

enter image description here