在RegEx中查找Word而忽略特殊字符

时间:2014-11-18 06:04:47

标签: android regex

我正在尝试在以下字符串中找到“string”一词,并忽略其间的任何特殊字符。 如,

String s =“这是一个示例字符串。在这个st @ ring中我想搜索我的s%#tring”;

结果应为“3场比赛”: 串 串 S(%)#特林

应该忽略这些字符@%#

2 个答案:

答案 0 :(得分:1)

你可以用这个:

s[^string]*?t[^string]*?r[^string]*?i[^string]*?n[^string]*?g

演示:http://regex101.com/r/xP5iT1/1

答案 1 :(得分:1)

好像你想要这样的东西,

\bs[^A-Za-z0-9\s]*?t[^A-Za-z0-9\s]*?r[^A-Za-z0-9\s]*?i[^A-Za-z0-9\s]*?n[^A-Za-z0-9\s]*?g\b

[^A-Za-z0-9\s]匹配任何字符,但不匹配字母数字或空格字符。

DEMO

Java代码将是,

String s = "this is a sample string. In this st@ring I would like to search my s%#tring";
Pattern regex = Pattern.compile("\\bs[^A-Za-z0-9\\s]*?t[^A-Za-z0-9\\s]*?r[^A-Za-z0-9\\s]*?i[^A-Za-z0-9\\s]*?n[^A-Za-z0-9\\s]*g\\b");
Matcher matcher = regex.matcher(s);
while(matcher.find()){
        System.out.println(matcher.group(0));
}

<强>输出:

string
st@ring
s%#tring