匹配单词以不同字母开头和结尾

时间:2019-04-01 03:45:35

标签: regex

我正在写一个通用表达式来匹配以不同字母开头和结尾的单词。

我尝试了^(.).*(?![^\1]$)。但这不起作用。

要测试的一些单词:“ aa”,“ ab”,“ aba”,“ aab”,“ abc”。

2 个答案:

答案 0 :(得分:2)

您不能在字符集中放置反向引用-而是在最后一个字符之前对第一组(没有字符集)进行负向超前查找,然后匹配任意字符和字符串的结尾:

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

https://regex101.com/r/fnpsgf/1

答案 1 :(得分:0)

这取决于您对“单词”的定义(允许使用哪个字符)

\b(\w)\w*(?!\1)\w\b

此第一个正则表达式将从句子中识别出所有符合条件的单词(该单词(和单词length>=2中的最后一个单词char与最后一个单词char不同)。

如果在正则表达式中使用.,它将匹配任何字符(行终止符除外),其中包括空格...

如果您的输入已经是单词,则可以用^(\ w)\ w *(?!\ 1)\ w $代替,也可以将\w(相当于[a-zA-Z0-9_])更改为一个更适合您的范围或一个预定义的字符类(取决于您的正则表达式引擎\p{L}[[:Alpha:]]\p{Alpha},...)。