【问题标题】:Regex: Find/Select all ASCII symbols between words正则表达式:查找/选择单词之间的所有 ASCII 符号
【发布时间】:2017-09-07 07:36:42
【问题描述】:

我想使用正则表达式查找title="Subject 之间的所有符号,或者查找包含这些单词之间的这些符号的所有行:

【问题讨论】:

    标签: regex windows notepad++


    【解决方案1】:

    要查找title=" 之后的特殊字符,您可以使用lookbehind 和否定字符类。

    查找内容:(?<=title=")[^\w"]+
    搜索模式:正则表达式

    查找整行:

    查找内容:^.*title="[^\w"]+\w+.*$
    搜索模式:正则表达式(. matches new lines 已勾选)

    【讨论】:

    • 好的,仅适用于 4 个符号。但是,如果我有超过 4 个 ASCII 符号,比如 7 个符号,则无法找到/选择所有这些符号。
    • + 匹配 1 个或多个,因此 4 或 7 无关紧要。是因为那些特殊字符在标题中的某个地方,而不仅仅是在开头吗?你有没有找到它们的例子吗?
    • 对于第一个正则表达式,请看这个打印屏幕:snag.gy/vxPXHS.jpg 第二个正则表达式,不起作用
    • 嗯...它停在 FF。不确定那是什么字符。表单馈送?如果您从正则表达式中删除 \s 会怎样? (假设 FF 被认为是一个空格)
    • 是的,您的第一个正则表达式在没有 \s 的情况下工作,但第二个正则表达式不起作用。
    【解决方案2】:

    您可以搜索 title="([^"\r\n]*?)Subject,然后需要的字符应该在捕获组 1 中,因此可以在替换字段中以 $1\1 访问它们。

    请注意,捕获组不包括字符串引号和行尾字符。还使用了非贪婪搜索。这些都是为了让搜索找到最小的字符集,即避免与输入文本混淆,例如title="!%&Subject" xyz="Subject"title="!%&Subject" Subject="xyz"title="!%&Subject 1 and Subject 2"

    【讨论】:

    • @JustMe 当然不是。该图像中的文本在Subject 之前有一个字符串引号,并且您的原始问题中没有显示。
    • 上面评论中链接的图片中的文字是code bebe text="---"Subject this。原始问题的图像包含code text="---Subject this。在这两种情况下,--- 代表一组字符,其中许多字符在 \x20 到 \x7F 的集合之外。
    【解决方案3】:

    全部查找:

    (?<=title=")[^\w"]+.*?|^Subject

    【讨论】:

    • | 表示搜索正在寻找 (?<=title=")[^\w"]+.*?^Subject,这不是 qestion 想要的。
    猜你喜欢
    • 2015-08-13
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多