Java RegEx模式(

时间:2014-08-05 12:24:50

标签: java regex

我正在尝试为字符串

形成正则表达式
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(数据)应该是真的....,这不会发生

有人可以给我一个允许()

的模式

2 个答案:

答案 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正则表达式引擎中的(相同(即组的开头),这使得事情更加混乱,这是我尝试的另一个原因避免它。