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

标签 regex grep

我有以下示例行:

a_a
b_c

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

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

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

最佳答案

使用小组比赛。

您可以使用第一个字符创建一个组,然后将组 (\1) 放在末尾。

^(.).*\1$

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

相反:

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

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

关于正则表达式:匹配除反向引用之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33318911/

相关文章:

bash - 在 bash 中解析输出

linux - 如何尾部所有文件并通过通配符名称排除某些文件?

unix - 仅打印匹配的单词,而不是通过grep打印整行

linux - 如何仅使用 grep 提取模式

php - 正则表达式在 PHP 中的 2 个标签之间获取文本

linux - awk/sed/grep命令比较三个文件的内容

php - MySQL Regexp 哪里喜欢值

regex - 如果存在于 Google 电子表格中的单元格中,则提取多个值

javascript - Django urlpatterns 正则表达式不精确,得到 404?

javascript - 带分隔符的三个可选部分的正则表达式