正则表达式条件语句

时间:2015-12-17 15:19:55

标签: regex

所以我一直想弄清楚正则表达式中的if函数,但是,可以搞定它。

这是可能发生的两种情况:

  • - [MyTag]随机文本,特殊情况下可以有0-9。
  • - 随机文字,特殊情况下可以有0-9。

我的模式应该做什么:

IF(文字包含"]") 然后从"]"开始 ELSE从"开始 - "

我试图用这个达到目的: (?(\ _))(\]。* $)|(\ - 。* $))

当然失败了。我们得到了 (\]。* $)收集来自"]"的部分直到END OF LINE已达到
(\ - 。* $)收集来自" - "直到行结束
?(\])哪个应该作为IF语句

所以有人可以向我解释有什么问题以及如何解决它?

2 个答案:

答案 0 :(得分:1)

据我了解,您希望匹配以-开头的任何行子字符串,该子字符串在其后面的同一行上没有非相邻的],或者在{ {1}}。

由于]具有优先权,因此它应该是该组中的第一个替代方案:

]

请参阅the demo,第1组将保留没有(?:\]|-(?!.*]))(.*) -的行部分。

答案 1 :(得分:1)

听起来你希望[MyTag]位是可选的,并且模式的其余部分是相同的。

因此,您可以尝试执行此操作的模式:

\s*\-\s+(\[\w+\])?(\s.+)$

其中:

  • \s*\-\s+是由空格包围的连字符
  • (\[\w+\])?可选地是大括号中的标记
  • (\s.+)$是字符串末尾的其余部分,包括前导单个空格