正则表达式-如何确保两个字符之间或从开始到特定字符仅出现一个字符实例

时间:2019-02-28 15:10:30

标签: java regex

我想确保在括号前只出现1个comoa实例。括号是必须的。我需要确保所有字符串都与模式匹配。正则表达式匹配器不能为子字符串。

示例;

android:layout_centerHorizontal="true"

我尝试过这一方法,还可以解释为什么它不起作用吗?谢谢

 Mert,sert , abc() = not valid
 Mert, asd( = valid
 Mert , asd,( = not valid
 Mert , asd = not valid

1 个答案:

答案 0 :(得分:3)

您可以使用

^[^,(]*,[^,(]*\(.*

请参见regex demo

在Java中,使用

Boolean result = s.matches("[^,(]*,[^,(]*\\(.*");

或者,如果可以使用换行符,请s.matches("(?s)[^,(]*,[^,(]*\\(.*")

详细信息

  • ^-字符串的开头(String#matches中不需要)
  • [^,(]*-除逗号和右括号外的0个或多个字符
  • ,-逗号
  • [^,(]*-除逗号和右括号外的0个或多个字符
  • \(-右括号
  • .*-行/字符串的其余部分(带有(?s))。