正则表达式匹配前面的单词而不是单词本身

时间:2018-01-05 16:40:50

标签: regex

我需要一个正则表达式来匹配紧跟在关键字之前的单词,但不匹配关键字本身。例如,在以下文本中:

#!/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")。有没有人对此有任何建议?我还在学习正则表达式。 谢谢!!

2 个答案:

答案 0 :(得分:4)

代码

See regex in use here

\w+(?= +keyword\b)

结果

输入

this is some text keyword

输出

仅匹配如下所示

text

说明

  • \w+匹配一个或多个单词字符
  • (?= +keyword\b)确定以下内容的正向前瞻符合以下内容
    • +匹配一个或多个空格(请注意,+之前实际上有一个空格,但SO没有显示它)
    • keyword按字面意思匹配
    • \b断言位置为单词边界

答案 1 :(得分:0)

如果关键字需要最后一行,请使用此(?m)\w+(?=\h+keyword$)