所以我一直想弄清楚正则表达式中的if函数,但是,可以搞定它。
这是可能发生的两种情况:
我的模式应该做什么:
IF(文字包含"]") 然后从"]"开始 ELSE从"开始 - "
我试图用这个达到目的: (?(\ _))(\]。* $)|(\ - 。* $))
当然失败了。我们得到了
(\]。* $)收集来自"]"的部分直到END OF LINE已达到
(\ - 。* $)收集来自" - "直到行结束
?(\])哪个应该作为IF语句
所以有人可以向我解释有什么问题以及如何解决它?
答案 0 :(得分:1)
据我了解,您希望匹配以-
开头的任何行子字符串,该子字符串在其后面的同一行上没有非相邻的]
,或者在{ {1}}。
由于]
具有优先权,因此它应该是该组中的第一个替代方案:
]
请参阅the demo,第1组将保留没有(?:\]|-(?!.*]))(.*)
或-
的行部分。
答案 1 :(得分:1)
听起来你希望[MyTag]
位是可选的,并且模式的其余部分是相同的。
因此,您可以尝试执行此操作的模式:
\s*\-\s+(\[\w+\])?(\s.+)$
其中:
\s*\-\s+
是由空格包围的连字符(\[\w+\])?
可选地是大括号中的标记(\s.+)$
是字符串末尾的其余部分,包括前导单个空格