Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何绑定+;/*对于正则表达式组?_Java_Regex - Fatal编程技术网

Java 如何绑定+;/*对于正则表达式组?

Java 如何绑定+;/*对于正则表达式组?,java,regex,Java,Regex,假设我有正则表达式: (CC|NP)* 因此,它在Java中的look-before正则表达式中产生了问题。我应该如何写它来避免这些问题? 我想把它改写成: (CC|NP){1,9} 在Java中,这些Quantitier{}似乎只对非组正则表达式元素起作用,如下所示: \w+\[\S{1,9}\] 抱歉,后视模式通常对子模式有限制。见f.x。或者在web上搜索“查找模式限制” 您可以尝试将所有固定长度的后视模式变体记为交替模式。但这可能有很多 您还可以通过正常匹配内部模式来模拟查找,并

假设我有正则表达式:

(CC|NP)*
因此,它在Java中的look-before正则表达式中产生了问题。我应该如何写它来避免这些问题? 我想把它改写成:

(CC|NP){1,9}
在Java中,这些Quantitier{}似乎只对非组正则表达式元素起作用,如下所示:

\w+\[\S{1,9}\]

抱歉,后视模式通常对子模式有限制。见f.x。或者在web上搜索“查找模式限制”

您可以尝试将所有固定长度的后视模式变体记为交替模式。但这可能有很多


您还可以通过正常匹配内部模式来模拟查找,并对实际目标进行匹配和分组:
(?:CC | NP)*(.*)

我不确定您从何处感觉到问题。量词作用于组就像作用于任何实体一样

因此,
\w+\[\S{1,9}\]
可以用同样的结果编写
\w+\[(\S{1,9}\]

就您在regexr上的示例而言,这里没有任何问题。它符合它的要求

(PUN | CC | NP){1,3}
将贪婪地尝试匹配任何替换(以从左到右的优先级)。比赛内容将不会中断。它匹配1-3个连续出现的双关语、CC或NP

您提供的示例字符串在CC之间有一个空格,因此由于正则表达式中不存在空格,因此不匹配。唯一匹配的是一个
CC

如果您想占用空间,可以将其添加到分组中,如下所示:
(?:(?:PUN | CC | NP)\s*){1,3}

如果您只想在备选方案之间留有空格,可以这样做:

(?:PUN | CC | NP)(?:\s*(?:PUN | CC | NP)){0,2}

上界不被忽略。
global
开关在regexr中打开。关闭它,您将看到它是有效的:这个全局选项是否对应于Java中的任何内容?@simpatico Java Matcher类不提供将所有匹配作为数组获取的选项。如果你想全局匹配,你必须自己迭代。此外,String和Matcher类还提供了replaceAll方法来使用全局替换模式。Java 7实际上部分支持无限查找正则表达式。@Arne。{1,9}应符合这些限制。我使用的是有限边界。@simpatic交替CC | NP也可能会导致问题。