【发布时间】:2016-11-21 20:37:02
【问题描述】:
我想知道如何仅在行首匹配某个字符串时捕获文本...但我不想捕获开始字符串...
例如,如果我有文字:
BEGIN_TAG:要捕获的文本
WRONG_TAG:不可捕捉的文字
我想捕捉:
要捕获的文本
从以 BEGIN_TAG 开头的行:不是以 WRONG_TAG 开头的行:
我知道如何选择以所需文本开头的行:^BEGIN_TAG:\W?(.*)
但是这会选择文本“BEGIN_TAG:”...我不希望它只想要“BEGIN_TAG”之后的文本
我正在使用 PCRE 正则表达式
【问题讨论】:
-
尝试使用
(?:)表示的非捕获组。 -
“选择”是什么意思?您将文本捕获到第 1 组。它已经存在。您需要做的就是访问第 1 组的内容。是PHP吗?看看demo。
-
它不是 PHP 而是 sublimetext。 “选择”是指我希望文本在我的捕获组中
-
Sublime 是否支持lookbehind?
(?<=^BEGIN_TAG:\W*)(\w.*)$ -
@melpomene 当然是对的。所以
(?<=^BEGIN_TAG:\W)(.*)$你得到了,如果你还想在文本后面直接匹配没有非单词字符,你还需要(?<=^BEGIN_TAG:)(.*)$。