我需要一个正则表达式来匹配紧跟在关键字之前的单词,但不匹配关键字本身。例如,在以下文本中:
#!/bin/bash
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http enabled true
gsettings set org.gnome.system.proxy.http host '******'$1
gsettings set org.gnome.system.proxy.http port '******'
gsettings set org.gnome.system.proxy.http authentication-user '*****'
gsettings set org.gnome.system.proxy.http authentication-password '*****'
gsettings set org.gnome.system.proxy use-same-proxy true
正则表达式应匹配" text" (假设"关键字"是关键字)。我还应该注意,关键字将始终显示为一行中的最后一个单词。到目前为止,我已经提出了这个正则表达式:
"this is some text keyword"
但是它匹配前面的单词和关键字本身(所以在上面的示例中它将匹配" text keyword"而不仅仅是" text")。有没有人对此有任何建议?我还在学习正则表达式。 谢谢!!
答案 0 :(得分:4)
\w+(?= +keyword\b)
this is some text keyword
仅匹配如下所示
text
\w+
匹配一个或多个单词字符(?= +keyword\b)
确定以下内容的正向前瞻符合以下内容
+
匹配一个或多个空格(请注意,+
之前实际上有一个空格,但SO没有显示它)keyword
按字面意思匹配\b
断言位置为单词边界答案 1 :(得分:0)
如果关键字需要最后一行,请使用此(?m)\w+(?=\h+keyword$)。