gpt4 book ai didi

Java 正则表达式 : match whole word with word boundary

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:22 24 4
gpt4 key购买 nike

我正在尝试使用 Java 检查一个字符串是否包含整个单词。以下是一些示例:

Text : "A quick brown fox"
Words:
"qui" - false
"quick" - true
"quick brown" - true
"ox" - false
"A" - true

下面是我的代码:

String pattern = "\\b(<word>)\\b";
String s = "ox";
String text = "A quick brown fox".toLowerCase();
System.out.println(Pattern.compile(pattern.replaceAll("<word>", s.toLowerCase())).matcher(text).find());

它可以很好地处理像我在上面的例子中提到的那样的字符串。但是,如果输入字符串包含 %( 等字符,我会得到不正确的结果,例如:

Text : "c14, 50%; something (in) bracket"
Words:
"c14, 50%;" : false
"(in) bracket" : false

这与我的 regex 模式有关(或者我可能错误地进行了整个模式匹配)。谁能建议我更好的方法。

最佳答案

看来您只想匹配用空格括起来的“单词”(或在字符串的开头/结尾)。

使用

String pattern = "(?<!\\S)" + Pattern.quote(word) + "(?!\\S)";

(?<!\S)否定后视将使所有紧接在前面的字符而不是空格和 (?!\s) 的匹配失败。是一个否定的先行,它将使所有紧随其后的字符不是空白的匹配失败。 Pattern.quote()有必要转义需要在正则表达式模式中被视为文字字符的特殊字符。

关于Java 正则表达式 : match whole word with word boundary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42904361/

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