java如何查找和跳过单词开头和结尾的特殊字符
不熟悉正则表达式,使用以下代码查找单词的结尾/开头是否包含特殊字符
String s = "K-factor:";
String regExp = "^[^<>{}\"/|;:.,~!?@#$%^=&*\\]\\\\()\\[0-9_+]*$";
Matcher matcher = Pattern.compile(regExp).matcher(s);
while (matcher.find()) {
System.out.println("Start: "+ matcher.start());
System.out.println("End: "+ matcher.end());
System.out.println("Group: "+ matcher.group());
s = s.substring(0, matcher.start());
}
想知道字符串的开头或结尾是否有特殊字符(:在这个示例代码中)。试图跳过角色。 既不是编译时错误,也不是输出
# 1 楼答案
请注意,正则表达式匹配的整个字符串不包含您在字符类中定义的字符。所讨论的字符串与该模式不匹配,因为它包含
:
你可以考虑将模式分成两个部分,用交替组检查开始或结束时不需要的字符:
这里,模式有一个,使它们为正,而不是为负,这样它们就可以匹配类中定义的那些字符/范围
^<special_char_class>|<special_char_class>$
结构,^
在开始时锚定匹配,$
在字符串结尾锚定匹配,并且|
是交替操作符。注意:我从character类的开头删除了^{或者,由于如果字符串的开头/结尾包含非字母,则似乎只匹配字符串,因此可以使用
这是Unicode字母识别或仅限ASCII码: