请教一个匹配字符串规则的正则表达式

目标字符:330nF(250V)(xx)
我写的正则:^([^ ()]+)(\\(.*?\\))$

有个问题是多个括号如:330nF(250V)(xx)(yy)也能匹配到,,,想要匹配以下对应关系:
330nF(250V -> 错误
330nF(250V ) -> 错误
330nF(250V ab) -> 330nF(250V ab)
330nF(250V) -> 330nF(250V)
330nF(250V)(xx) -> 330nF(250V)
330nF(250V)(xx)(yy) -> 330nF(250V)

阅读 2.9k
6 个回答

更新过的描述其实还是有不明确的地方,看图吧,是要这样的?

image


你的描述可以有多种解释,不清楚你要的是哪一种

假设你要的是 匹配 330nF(250V) 330nF(250V)(xx)
不匹配 330nF(250V)(xx)(yy)

^([^\\(\\)]+)(\\([^\\(\\)]*\\))(\\([^\\(\\)]*\\))?$

编辑器的问题,\\ 请改为 \

你的描述很难懂,我理解就是,你只想匹配到第一个括号完就结束?

^[\da-zA-Z]+?\([\da-zA-Z]+?\)$

看了下,是这个?
(\\w+?)\\(\\w+(\\s?)(\\w+?)\\)

校验字符串一共有一个(,一个)不就行了

你是要从一大堆文本中匹配数据还是要做数据格式校验?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进