Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,我发现在正则表达式中查找前缀和后缀有点困难。我正在练习,想做以下几点: 给出一个字符串:“詹姆斯很好”。我希望能够按顺序匹配最大的子字符串,即如果文本是“James”或“James is”或“James is good”,则获得匹配。因此,如果我有以下文字:“詹姆斯是詹姆斯”,我应该能够捕捉“詹姆斯是”,而不仅仅是“詹姆斯”。Simally“is James James is Good James”应该给我“James is Good”而不是“is James”,因为它是不正常的,不是最大的 我

我发现在正则表达式中查找前缀和后缀有点困难。我正在练习,想做以下几点:

给出一个字符串:“詹姆斯很好”。我希望能够按顺序匹配最大的子字符串,即如果文本是“James”或“James is”或“James is good”,则获得匹配。因此,如果我有以下文字:“詹姆斯是詹姆斯”,我应该能够捕捉“詹姆斯是”,而不仅仅是“詹姆斯”。Simally“is James James is Good James”应该给我“James is Good”而不是“is James”,因为它是不正常的,不是最大的

我想我可以使用后缀不存在(?),来匹配,如果“是好的”不存在,只说“詹姆斯”,等等,但我不确定我是否正确理解前缀和后缀匹配的概念


在这种情况下,任何澄清或帮助都是非常好的。我标记java是因为我熟悉java的正则表达式api。

我想你的意思是你想捕获“James is”和下一个单词(如果存在)。在这种情况下,您应该说
“(詹姆斯是(?:\s+\w+)”
。显然,在java代码中,反斜杠必须重复


我还没有运行这个正则表达式,但我相信它可以为调试您的正则表达式提供一个良好的开端。

我不确定,但我假设您所说的是“向后看”和“向前看”断言

断言的长度为零,并且与空字符串匹配,因此此构造不匹配任何字符。只有在某个模式前面或后面有某个其他模式时(或者如果使用负片版本,则不能使用负片模式),才可以使用它们来匹配该模式

您可以在此处查看更多有关的详细信息


这是关于Perl的,但它在Java中的工作原理类似。

感谢您的快速回复!是的,但我只想捕捉下一个单词,如果它是“好的”。否则我要“詹姆斯是”。“詹姆斯”和“是”也是一样。如果下一个单词不是“是”,我想抓住“詹姆斯”。否则我要“詹姆斯是”。