我对正则表达式非常不满意,因此需要一些帮助:
我需要在内容中找到包含一个正则表达式的多个选项:
{{ Value }}
- 始终{{ Value | Value 2 }}
- 可选的第二部分 - |价值2 {{ Value | Value 2(Value3) }}
- 可选的第三部分 - (值3)规则:在值
之前或之后允许使用空格我得到的是这个,但它并不适用于所有三种需求和可选:
/\{{(.*)|(.*)}}/siU
答案 0 :(得分:1)
/\{{2}\s*?(.+)(?:\s*?\|\s*?(.+)\s*?(?:\(\s*?(.+)\s*?\))?)?\s*?\}{2}/isU
请自行美化。
\{{2}
是一个开头的大括号(\{
),恰好其中两个({2}
)。\s*?
是一个空格(\s
),零次或多次(*
)且尽可能多(?
处于不同模式)(.+)
是任何字符(.
),一次或多次(+
)(?:x)?
是一个未添加到结果(?:
)的子表达式x,必须永远或一次(尾随?
)。这里用于使“值2”部分可选。\s*?\|\s*?
与找到的空格一样多,竖条和更多空格(如果找到)。\(\s*?(.+)\s*?\)
是一个左括号(\(
),与找到的空格(\s*?
一样多),实际内容(至少一个字符,.+
),更多的空格和一个右括号。\}{2}
是结束的大括号,也是其中两个。答案 1 :(得分:0)
我的方法
/\{\{[\s\W]*((\w+)([\s\W]*\|[\s\W]*([\w]+)([\s\W]*\([\s\W]*(\w+)[\s\W]*\)[\s\W]*){0,1}){0,1})[\s\W]*\}\}/