仅在文件末尾匹配文件中单词的正则表达式

时间:2018-08-08 20:07:14

标签: regex sublimetext regex-lookarounds regex-group

因此,如果文件中包含某些内容,例如:DocumentRoot "/var/www/html"

那里有一个正则表达式,仅在该行的末尾与html相匹配。因此,我只希望它在行尾从html抓取DocumentRoot "/var/www/html",如果不在行尾,则别无其他。因此,如果出现类似html DocumentRoot的内容,则该内容不应匹配,因为它不在结尾。

我尝试做一些正则表达式,例如:^.*html$^DocumentRoot\s.*"/.*/.*/.*html"$ 只是做实验,但我无法找出仅在行尾抓取html的那个。

那么有没有一个仅在行尾抓取html的正则表达式?

3 个答案:

答案 0 :(得分:1)

(?<=^DocumentRoot "/var/www/)html(?="$)

使用(?<=...)后的正向查找来查找以^开始DocumentRoot "/var/www/的行,然后查找(?=...)的正向查找以确保该行以"$结尾

答案 1 :(得分:0)

^开始

的锚点

$结束

的锚点

您有自己的答案,只是不需要一次使用它们。

按照@Wiktor的建议,仅使用html"$

如果您还希望包含其他内容的行,请使用: (prefix).*html"$

答案 2 :(得分:0)

您可以使用

^(DocumentRoot\h.*/)html(")$

并替换为$1<NEW_VALUE>$2

请参见regex demo

详细信息

  • ^-一行的开头
  • (DocumentRoot\h.*/)-第1组:DocumentRoot文字子字符串,水平空白,除换行符外的任何0+字符,然后是/
  • html-文字子字符串
  • (")-第2组:"个字符
  • $-行尾。

要仅匹配该html,您还可以使用

^DocumentRoot\h.*/\Khtml(?="$)

然后,您只需要替换为<NEW_VALUE>。参见regex demo

此处,\K匹配重置运算符用于捕获html之前的匹配文本,而不是捕获组,并且实施了正向超前检查,以仅允许跟在{之后的匹配{1}}在行尾。