Java Regex前缀后缀

时间:2011-07-08 09:16:47

标签: java regex

我发现在正则表达式中包围前缀和后缀查找有点困难。我正在练习并想要做以下事情:

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

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

在这种情况下,任何澄清或帮助都会很棒。我标记了java,因为我熟悉java的正则表达式api。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我不确定,但我认为你正在谈论看后面并展望断言。

断言长度为零且与空字符串匹配,因此此构造不匹配任何字符。只有当模式在某个其他模式之前或之后时才可以使用它们匹配模式(如果使用否定模式则不能使用它们)

您可以在此处查看regular-expressions.info

的详细信息

Perlretut与Perl有关,但它在Java中的工作方式类似。

相关问题