我正在尝试为此模式创建正则表达式:
-someKeyword=somePhrase
-someOtherKeyword=someOtherPhrase
e.t.c。
问题是:关键字和短语应该在一个匹配项中成组,短语也可以包含字符“-”,现在我有了这个:-(?<keyword>[^=]*)=(?<phrase>[^-]*)
但这不支持短语中的“-”字符,我无法解决此问题,有什么建议吗?
答案 0 :(得分:1)
由于键可以包含任何字母,数字,下划线,点和空格字符,因此可以使用
-(?<keyword>[\w\s.]+)=(?<phrase>.*?)(?=-[\w\s.]+=|$)
请参见regex demo。
详细信息
-
-连字符(?<keyword>[\w\s.]+)
-一个“关键字”组:1个以上的字母,数字,下划线,点,
空格字符=
-等号(?<phrase>.*?)
-一个“短语”组:除换行符以外的任何0个或多个字符,尽可能少(由于*?
),直到最左边... (?=-[\w\s.]+=|$)
-(与a匹配的正向超前)位置,其后紧跟-
,1+个字母/数字/下划线/点/空格/空格,然后是=
或字符串末。答案 1 :(得分:-2)
-(?<keyword>[\w. ]+)=(?<phrase>.*?)(?=-[\w. ]+=|$)