我需要在括号中找到一个或多个已定义的字符组。如果存在多个组,则将用连字符分隔。
示例:
(us)
(jp)
(jp-us)
(jp-us-eu)
如果字符串只包含一个组,我已经想出如何找到该组:
/\(us\)|\(jp\)/
然而,当我找到不止一个,被夸大而且没有特定顺序分开时,我感到困惑:(us-jp)
或(jp-us)
感谢任何帮助。
谢谢, 西蒙
答案 0 :(得分:15)
\((\b(?:en|jp|us|eu)-?\b)+\)
说明:
\( // opening paren ( // match group one \b // word boundary (?:en|jp|us|eu) // your defined strings -? // a hyphen, optional \b // another word boundary )+ // repeat \) // closing paren
匹配:
(us)
(jp)
(jp-us)
(jp-us-eu)
不匹配:
(jp-us-eu-)
(-jp-us-eu)
(-jp-us-eu-)
答案 1 :(得分:2)
试试这个:
/\([a-z]{2}(?:-[a-z]{2})*\)/
这将匹配括号中的任何两个字母序列,即我包含更多由双语分开的两个字母序列。所以(ab)
,(ab-cd)
,(ab-cd-ef)
,(ab-cd-ef-gh)
等。