问题描述
我需要将以下python regexp转换为java regexp:
regexp = re.compile(r"^(?P<prefix>(%s)(%s)?)\s?\b(?P<name>.+)" %
("|".join(array1),
"|".join(array2)), re.IGNORECASE
| re.UNICODE)
其中array1和2是字符串数组。
我所做的是:
String regexp = String.format("^(?<prefix>(%s)(%s)?)\\s?\\b(?<name>.+)", array1, array2);
regexpPattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
但是,我在(%s)(%s)的问号中得到了PatternSyntaxException:“附近的未知后视组” 吗?
我对这个问号不太了解。
关于如何将其转换为Java 1.6的任何建议?
1楼
吨的事情会给你带来麻烦。
(?<
是Java中的正向后看表达式。
(?P<prefix>
是python中的命名组,java中没有命名组。
%s
String.format
和数组将不会产生|
从数组中加入字符串,就像在python示例中一样。
首先,您需要通过|
连接字符串|
从阵列手动。
然后,当您有两个字符串时,可以执行以下操作: regexpPattern = Pattern.compile(String.format("^((?:%s)(?:%s)?)\\\\s?\\\\b(.+)", string1, string2));
python中的prefix
组现在是Java中的组1, name
组是组2。