如何查找包含非单词字符的字符串?
Example input: l l'oreal s.a. l l' ab l
search String: l
output: XX l'oreal s.a. XX l' ab l
Expected: XX l'oreal s.a. XX l' ab X
我试图使用下面的正则表达式在输入字符串中查找搜索字符串。
String inputStr = "l l'oreal s.a. l l' ab l";
System.out.println(inputStr);
String searchStr = "l";
Pattern pattern = Pattern.compile("(\\b"+ searchStr +"\\b)(?=[\\s])");
Matcher matcher = pattern.matcher(inputStr);
if ( matcher.find()){
String rep = matcher.replaceAll("XX");
System.out.println("REP:" + rep);
}else{
System.out.println("no match...");
}
正则表达式模式搜索后跟空格 (\s) 的字符串。但在上面的示例中,它不适用于最后一个字符,因为它后面没有空格。
主要目标是查找包含非单词字符的字符串,例如...... private-limited(搜索 private 时应返回 false) 你好! (搜索 Hello 时为 false) 尝试过但不起作用的几种模式...
pattern = Pattern.compile("(?<![\\w+])" + searchStr + "(?![\\W+])", Pattern.CASE_INSENSITIVE);
pattern = Pattern.compile("(?<=[\\s])(\\b"+ searchStr +"\\b)(?=\\s)");
在上面的示例中,如果我替换 searchString = "l'",它不会匹配任何内容。
我的方法正确吗? 我缺少什么?
谢谢。
最佳答案
似乎您并不真正需要单词边界。您需要由空格或字符串末尾包围的匹配项。为此,您可以使用:
Pattern pattern = Pattern.compile("((?<=\\s|^)"+ searchStr +"(?=\\s|$))");
关于java - 如何查找包含非单词字符的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28949614/