gpt4 book ai didi

java - 正则表达式非单词边界和空格

转载 作者:行者123 更新时间:2023-11-30 08:49:53 24 4
gpt4 key购买 nike

我正在寻找一个正则表达式,它可以匹配任何包含"new"词然后是“ee”非词边界的句子。下面是我在非单词边界之前或之后放置的任何内容返回 False 的代码。

String sa = "this is new freeCode ";
System.out.println(sa.matches(".*\\s\\bnew\\b\\sfre.*")); //True
System.out.println(sa.matches(".*\\s\\Bee\\B\\s.*")); //False
System.out.println(sa.matches(".*\\Bee\\B.*")); //True

最佳答案

以下是这些测试产生这些结果的原因:

System.out.println(sa.matches(".*\\s\\bnew\\b\\sfre.*")); //True

this is new freeCode 包含something+whitespace+word boundary + new + word boundary + whitespace+fre+something. nw f 之间的单词边界匹配。

System.out.println(sa.matches(".*\\s\\Bee\\B\\s.*")); //False

\se 之间的非单词边界 \B 无法匹配,因为 e 是单词字符.因此,不匹配。

System.out.println(sa.matches(".*\\Bee\\B.*")); //True

非单词边界 \Be 之间匹配,因为 freecode 中的 e 不在一个单词中边界位置(它在 2 个字母之间,单词字符),最后的 e 后面再次跟一个字母(在这种情况下为 c)。这是一个有效的匹配。

要启用这两种检查,您需要组合第一个和第三个正则表达式模式。您不需要同时使用 \s\b\b\s。如果你只想匹配整个单词 new 删除 \s:

System.out.println(sa.matches(".*\\bnew\\b.*\\Bee\\B.*"));

如果您需要匹配 new 周围的空格,请使用:

System.out.println(sa.matches(".*\\snew\\s.*\\Bee\\B.*"));

关于java - 正则表达式非单词边界和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com