正则表达式-我该如何匹配?

时间:2019-01-05 00:00:21

标签: regex notepad++ regex-lookarounds

我一直在努力使此Regex正常工作,但显然在这些方面还不够好:(

Regex - Trying to extract sources

我认为这可以解决...我想在以下位置获取所有内容:

  1. 以ds://
  2. 开头
  3. 以回车或换行结尾

就是这样!本质上,我将做一个负面的前瞻,以便可以删除所有不符合上述条件的内容(在Notepad ++中),从而允许进行正则表达式搜索/替换。

4 个答案:

答案 0 :(得分:1)

  1. 搜索包含模式的行,并对其进行标记
    • 搜索菜单>标记
    • 查找内容:ds://.*\R
    • 检查正则表达式
    • 选中标记行
    • 查找全部
  2. 删除未标记的行
    • 搜索菜单>书签
    • 删除未标记的行

答案 1 :(得分:0)

您无需添加\w指示符即可在向前看的ds://之后查找单词。将其删除并将最终规范从捕获组中的“零或一个回车符,然后零或一个换行符”更改为“回车或换行符”应该为您做到这一点:

(?=ds:\/\/).*(?:\r|\n)

更新:不需要捕获回车或换行组。

更新2:以下正则表达式将实际用于您建议的用例中的注释,匹配所有问题中描述的模式。

^(?:(?!ds:\/\/.*(?:\r|\n)).)*$

答案 2 :(得分:0)

您的正则表达式(?=ds:\w+).*\r?\n?不匹配,因为内容中包含ds://,而\w不匹配正斜杠。为了使您的正则表达式正常工作,您可以将其更改为:

(?=ds://\w+).*\r?\n? demo,可以缩写为ds://.*\R? demo

请注意,您不必转义正斜杠。

如果您要查找并替换以保留包含ds://的行,则可以使用否定的前瞻:

查找内容

^(?!.*ds://).*\R?

替换为

留空

说明

  • ^字符串的开头
  • (?!.*ds://)断言该字符串不包含ds://的负向查找
  • .*匹配任意字符0次以上
  • \R?可选的unicode换行符序列,如果后面没有换行符,也可以匹配最后一行

请参见Regex demo

答案 3 :(得分:-1)

你去了,安德鲁:

正则表达式: ds:\/\/.*

链接: https://regex101.com/r/ulO9GO/2

让我知道是否有任何问题。