因此,如果文件中包含某些内容,例如:DocumentRoot "/var/www/html"
那里有一个正则表达式,仅在该行的末尾与html
相匹配。因此,我只希望它在行尾从html
抓取DocumentRoot "/var/www/html"
,如果不在行尾,则别无其他。因此,如果出现类似html DocumentRoot
的内容,则该内容不应匹配,因为它不在结尾。
我尝试做一些正则表达式,例如:^.*html$
和^DocumentRoot\s.*"/.*/.*/.*html"$
只是做实验,但我无法找出仅在行尾抓取html的那个。
那么有没有一个仅在行尾抓取html的正则表达式?
答案 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}}在行尾。