一个简单的正则表达式来自ex

时间:2014-04-16 10:11:20

标签: regex

我有以下正则表达式来匹配文本文件内容。

如您所见,它只匹配文本的一行

我需要匹配所有三条线。像这样。

并且它不应与文本中任何其他出现的'list'匹配,除非它以{..}结尾。

感谢任何帮助。

谢谢

3 个答案:

答案 0 :(得分:1)

你可以以这种精神使用某些东西,在你方便时适应。

(?m)^(?:list.*,\s*)*list.*,?\s*{[^}]*}

(?m)            # multiline flag (^ matches begin of line, not of string)
^               # beginning of line
(?:             # non captring group
    list.*,\s*  # list then anything then a mandatory comma, then whitespaces (possibly newline)
)*              # zero or more times
list.*,?\s*     # at least one list-line, ending or not with a comma
{[^}]*}         # what's inside the brackets

使用单独的非捕获组而不是(?:list.*,?\s*)+可确保多个list行以逗号分隔。

请参阅demo here

答案 1 :(得分:0)

这就是你需要的:

/^list.*?(?:,|\{\.\.\})$/gsim

http://regex101.com/r/zK5bP0

答案 2 :(得分:0)

试试这个

((?:list*)(?:\:{1,2})\s*[\w\W]*[^\,]*?)