在正则表达式之后进行解释



我正在研究"重复单词"算法,我找到了使用以下正则表达式的解决方案。

(?i)\b(\w+)\b[\w\W]*\b\1\b

我试图使用以下站点 http://public.kvalley.com/regex/regex.asp 来解释正则表达式,但我很难.有人可以为我分解正则表达式并向我解释吗?

 (?i)      - case insensitive flag
 \b       - word boundary
 (\w+)    - 1 or more word characters (A-Z, a-z, 0-9) in a captured group
 \b       - word boundary
 [\w\W]* - 0 or more word or non-word characters
 \b       - word boundary
 \1       - the group previously captured
 \b       - word boundary

您可能需要查看正则表达式的 Java 教程。所有这些都在那里解释。

边界
的多种用途如果您查看边界匹配器的 Java 教程,您将看到它匹配的内容,即单词的边界。由于这是在寻找重复的单词,因此请确保匹配确实是整个单词,而不是包含该单词的单词。

不区分
大小写正如 Phsemo 所提到的,这被用来使\1匹配组在情况不同时仍然匹配。即考虑句子中的第一个单词是否重复。

[\w\W]*
的使用再次如 Phsemo 所述,这可能用于代替 .(这是任何字符的正则表达式特殊字符,但这不保证匹配换行符请参阅此。 如果还包含 dotall 标志(?s)),则可以使用 .* 来代替它,以便匹配换行符。和*的量词(0 或更多),以便如果下一个单词是重复的,那么它是匹配的,如果重复之间有单词/字符,它们也会匹配。

相关内容

最新更新