给定这样的Regex
代码:
Matcher m = Pattern.compile("c:.*?(|t:){1}.*?").matcher(string);
我只想匹配
c:somesubstring|t:somesubstring
之类的东西。但是,它也可以匹配以下内容:c:somesubstring
和
c:somesubstring|a:somesubtring
怎么会这样我使用
(|t:){1}
来保证模式|t:
发生并且只发生一次。告诉我regex
有什么问题并给我一个regex
仅匹配c:somesubstring|t:somesubstring
的信息将很有帮助 最佳答案
|
是正则表达式中的特殊元字符,其作用类似于通常用于组合两个正则表达式的逻辑OR运算符。您需要转义|
符号,以便它与文字|
符号匹配。
Matcher m = Pattern.compile("c:.*?(\\|t:){1}.*?").matcher(string);
矮得多。
Matcher m = Pattern.compile("c:.*?\\|t:.*?").matcher(string);