我的正则表达式技能很差,而且大多数时候它们让我觉得自己很愚蠢。任何人都可以帮忙吗?
这个问题更关心的是更好地掌握正则表达式,而不是从泥汤中提取信息的工作,所以如果我对 mediawiki 模板系统的理解有缺陷,我真的不太介意。我很快就会发现它。
我正在解析 MediaWiki 标记,并且正在尝试获取 MediaWiki 模板名称。这些由以下内容表示:
{{模板名称|其他内容
或者
{{模板名称}}
如果 # 紧跟大括号:
{{#其他事情
我想忽略它。
所以...
我想匹配 2 个花括号 {{ 后面不跟 # 直到下一次出现 | (管道)或 }}(2 个结束卷曲)
所以:
{{我是一只青蛙|一些其他的东西 匹配
{{#我是一只青蛙|其他一些东西 失败了
垃圾在这里{{Monkey}}bla bla match
垃圾在这里{{#Monkey}}bla bla 失败
ETC...
以下正则表达式涵盖了这一点(我认为):
\{{2}(?!\#)(.*?)(?:\||\}\})
但也匹配:
这里有些东西{{{长颈鹿|oijq
如果不完全是 2 个开口花括号,我怎么能让它失败?
编辑:.net 正则表达式,顺便说一句