Java 正则表达式在输出中缺少匹配项
Java Regex missing a match in the output
我目前正在将字符串与正则表达式进行匹配。我的模式是:
"(?<=\p{Alnum}|\p{Punct})(\p{Alnum}+\p{Punct}{1})"
我正在将它与字符串匹配:
"https://www.google.com/"
我对上述正则表达式和字符串的期望结果是:
https:, www., google., com/
除了'https:'一个之外,我能够成功获得所有匹配项。在那种情况下,它给出 'ttps:' 而不是所需的 'https:'
我不明白哪里出了问题。谁能帮我解决这个问题?
你可以使用
(?<![^\p{Alnum}\p{Punct}])(\p{Alnum}+\p{Punct})
(?<![^\p{Alnum}\p{Punct}])
negativelookbehind 匹配前面没有紧接字母数字和标点字符以外的字符的位置。
请注意,您的正则表达式需要紧靠左侧的字母数字或标点字符,因此无法匹配字符串位置的开头。
请注意 {1}
始终是冗余的,您可以在 "Writing cleaner regular expressions" YT video of mine.
中查看有关正则表达式冗余的更多信息
我目前正在将字符串与正则表达式进行匹配。我的模式是:
"(?<=\p{Alnum}|\p{Punct})(\p{Alnum}+\p{Punct}{1})"
我正在将它与字符串匹配:
"https://www.google.com/"
我对上述正则表达式和字符串的期望结果是:
https:, www., google., com/
除了'https:'一个之外,我能够成功获得所有匹配项。在那种情况下,它给出 'ttps:' 而不是所需的 'https:'
我不明白哪里出了问题。谁能帮我解决这个问题?
你可以使用
(?<![^\p{Alnum}\p{Punct}])(\p{Alnum}+\p{Punct})
(?<![^\p{Alnum}\p{Punct}])
negativelookbehind 匹配前面没有紧接字母数字和标点字符以外的字符的位置。
请注意,您的正则表达式需要紧靠左侧的字母数字或标点字符,因此无法匹配字符串位置的开头。
请注意 {1}
始终是冗余的,您可以在 "Writing cleaner regular expressions" YT video of mine.