Java正则表达式前缀后缀
我发现在正则表达式中查找前缀和后缀有点困难。我正在练习,想做以下几点: 给出一个字符串:“詹姆斯很好”。我希望能够按顺序匹配最大的子字符串,即如果文本是“James”或“James is”或“James is good”,则获得匹配。因此,如果我有以下文字:“詹姆斯是詹姆斯”,我应该能够捕捉“詹姆斯是”,而不仅仅是“詹姆斯”。Simally“is James James is Good James”应该给我“James is Good”而不是“is James”,因为它是不正常的,不是最大的 我想我可以使用后缀不存在(?),来匹配,如果“是好的”不存在,只说“詹姆斯”,等等,但我不确定我是否正确理解前缀和后缀匹配的概念Java正则表达式前缀后缀,java,regex,Java,Regex,我发现在正则表达式中查找前缀和后缀有点困难。我正在练习,想做以下几点: 给出一个字符串:“詹姆斯很好”。我希望能够按顺序匹配最大的子字符串,即如果文本是“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中的工作原理类似。感谢您的快速回复!是的,但我只想捕捉下一个单词,如果它是“好的”。否则我要“詹姆斯是”。“詹姆斯”和“是”也是一样。如果下一个单词不是“是”,我想抓住“詹姆斯”。否则我要“詹姆斯是”。