正则表达式:匹配除反向引用之外的所有内容

时间:2015-10-24 13:46:10

标签: regex grep

我有以下示例行:

a_a
b_c

如何(使用grep / egrep)匹配第一个字母不等于最后一个字母的行?我尝试了以下但这似乎无法正常工作。

egrep ([ab])_[^\1]

对于我的用例,使用egrep -v或反正则表达式(匹配除第一个字母等于最后一个字母之外的所有内容)不可能

3 个答案:

答案 0 :(得分:0)

使用小组匹配。

在那里你创建一个包含第一个字符的组,然后将组(\1)放在最后。

^(.).*\1$

egrep '^(.).*\1$'  

相反:

^(.).*((?!\1).)+$

pcregrep '^(.).*((?!\1).)+$'

答案 1 :(得分:0)

可能你正在寻找这个:

  

\ B([A-Z])\ W +(?!(\ 1))([A-Z])\ B'/ P>

适用于:

a_a和b_c

(使用:The Regulator 2.0.3测试)

然后,您可以调整此正则表达式以满足您的需求

答案 2 :(得分:0)

在锚定到输入结尾后使用负面外观。第一个字符的一般正则表达式不是最后一个字符"是:

^(.).*(?<!\1)$

仅匹配您的输入类型:

^(.)_.(?<!\1)$