【发布时间】:2021-03-27 09:39:08
【问题描述】:
我尝试将两个正则表达式与AND 结合,但尝试失败。
- 在 '[[' 和 (']]' 或 '|') 之间连续选取任何内容:
(?<=(\[\[))(.*?)(?=(\||(\]\])))
- 不包含“http”:
^(?:(?!http).)*$
我最好的尝试是
(?=(?<=(\[\[))(.*?)(?=(\||(\]\]))))(?=^(?:(?!http).)*$).*$
关注https://stackoverflow.com/a/870506,但它不起作用。
我的目标是获取 dokuwiki 页面中的所有内部链接,通常是:'my_page'、'my_other_page',但不是 'http://your_page' in:
[[my_page]]
[[my_other_page|this is my other page]]
[[http://your_page|this is your page]]
【问题讨论】:
-
试试
\[\[(?!https?:\/\/)[^][|]*(?:\|[^][]*)?]],见this regex demo。 -
您可以在代码中的下一个正则表达式之后应用一个正则表达式吗?有时这比想出一个超级正则表达式更容易......
-
谢谢,但我也需要去掉括号,我只想匹配 'my_page' 和 'my_other_page'。
-
是的,我想过:之后应用另一个正则表达式。但第一个结果将存储在一个数组中,所以我必须对所有结果进行循环并检查它们,有点难看,但我可以做到。
-
http可以存在于分隔符之外吗?例如
[[my_other_page|foo http bar]]应该匹配my_other_page?匹配的输入是否总是以分隔符开始/结束?
标签: regex