我正在尝试为字符串
形成正则表达式Duo Eyeshadow, COMPACT(LID/BASE FRAME ASSY)
爪哇:
Pattern p = Pattern.compile("\"[a-zA-Z0-9 &/.\\-{()}]+[,][ a-zA-Z0-9&/.\\-{()}]+\"");
上面的表达式编译,但不接受字符串中的(
。任何人都可以帮我找到上述字符串的确切注册表吗?
我提供的输入为string data="Duo Eyeshadow, COMPACT(LID/BASE FRAME ASSY)"
我需要p.matches(数据)应该是真的....,这不会发生
有人可以给我一个允许(
和)
答案 0 :(得分:2)
以下正则表达式足以匹配上面的字符串Duo Eyeshadow, COMPACT(LID/BASE FRAME ASSY)
,
"[A-Za-z ]+,[ A-Za-z(/)]+"
<强>代码:强>
String s = "Duo Eyeshadow, COMPACT(LID/BASE FRAME ASSY)";
boolean out = s.matches("[A-Za-z ]+,[ A-Za-z(/)]+");
System.out.println(out); //=> true
OR
String s = "DuoEyeshadow,COMPACTLI(DBAS)EFRAMEASSY";
boolean out = s.matches("[a-zA-Z0-9 &/.{()}-]+,[ a-zA-Z0-9&/.{()}-]+");
System.out.println(out); //=> true
答案 1 :(得分:0)
我发现在regexp中匹配(
和)
的最简单方法是使用[(]
和[)]
。这适用于大多数正则表达式引擎,非常容易阅读,并且不会意外爆炸。
另一个选项是\(
但是当你在字符串中使用它时必须成为"\\("
(以逃避在Java字符串中具有特殊含义的反斜杠;完全与regexp无关但是进入方式)。
在一些正则表达式俚语中,\(
实际上与Java正则表达式引擎中的(
相同(即组的开头),这使得事情更加混乱,这是我尝试的另一个原因避免它。