当前位置: 代码迷 >> python >> 如何将python正则表达式转换为Java
  详细解决方案

如何将python正则表达式转换为Java

热度:48   发布时间:2023-07-16 10:28:02.0

我需要将以下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的任何建议?

吨的事情会给你带来麻烦。

(?<是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。

  相关解决方案