Regex 字后正则表达式匹配

Regex 字后正则表达式匹配,regex,pcre,Regex,Pcre,我想知道如何捕获文本只有当一行的开头匹配某个字符串。。。但我不想捕捉开始的字符串 例如,如果我有文本: 开始标记:要捕获的文本 错误的_标记:不捕获的文本 我想捕捉: 要捕获的文本 从以begin_标记开头的行开始:而不是从以错误的_标记开头的行开始: 我知道如何选择以所需文本开头的行:^begin\标记:\W?(.*) 但这会选择文本“BEGIN_TAG:”。。。我不想要这个,只想要“开始标记”后的文本 我使用的是PCRE正则表达式您可以使用。然后,Lookback组中的文本不是整个匹配的一部

我想知道如何捕获文本只有当一行的开头匹配某个字符串。。。但我不想捕捉开始的字符串

例如,如果我有文本:

开始标记:要捕获的文本

错误的_标记:不捕获的文本

我想捕捉:

要捕获的文本

从以begin_标记开头的行开始:而不是从以错误的_标记开头的行开始:

我知道如何选择以所需文本开头的行:^begin\标记:\W?(.*)

但这会选择文本“BEGIN_TAG:”。。。我不想要这个,只想要“开始标记”后的文本

我使用的是PCRE正则表达式

您可以使用。然后,Lookback组中的文本不是整个匹配的一部分。您可以将其视为锚定,如
\b
^

然后你会得到:


(?您可以使用匹配重置运算符
\K
,而不是不允许未知宽度模式的正向查找:

^BEGIN_TAG:\W?\K.*

详细信息

  • ^
    -在Sublime中,是一行的开头
  • BEGIN\u标记:
    -一个文本字符字符串
  • \W?
    -1或0个非单词字符
  • \K
    -匹配重置运算符,用于丢弃迄今为止匹配的所有文本
  • *
    -除换行符(行的其余部分)以外的任何0+字符,这些字符是匹配文本中唯一保留的字符

尝试一个由
(?:)
表示的非捕获组。你所说的“选择”是什么意思?你将文本捕获到组1中。它已经在那里了。你所需要做的就是访问组1的内容。它是PHP吗?看看。它不是PHP,而是SublimateText中的“选择”我的意思是,我希望文本在我的捕获组中。Supreme是否支持lookbehind?
(?@melpomene,当然是对的。因此
(?现在,要支持可选的
\W
,您必须使用lookbehinds的交替:
(?:)来支持?