2015-09-24 131 views
0

正则表达式新手在这里,所以我尝试这个网站的乐趣:https://regex.alf.nu正则表达式的含义(正则表达式高尔夫)

特别,我很关心的“范围”一节在这里:https://regex.alf.nu/2

我能得到尽可能多的^[a-f]+,并找不出其余的。无意中,我添加了一个$得到^[a-f]+$这实际上是答案。

试图围绕这个正则表达式的意义。有人可以给出简单的英语解释这里发生了什么吗?

它似乎是说“以字母a到f中的一个或多个字母开头和结尾的字符串”,但这对我来说不太合理,例如,对于似乎是“cajac”满足这些条件。

对于那些谁也看不出的URL,它要求我来匹配这些话:

abac 
accede 
adead 
babe 
bead 
bebed 
bedad 
bedded 
bedead 
bedeaf 
caba 
caffa 
dace 
dade 
daff 
dead 
deed 
deface 
faded 
faff 
feed 

但不匹配这些:

beam 
buoy 
canjac 
chymia 
corah 
cupula 
griece 
hafter 
idic 
lucy 
martyr 
matron 
messrs 
mucose 
relose 
sonly 
tegua 
threap 
towned 
widish 
yite 
+0

@iamnotmaynard这不是一个“给我这个代码”的问题,也不是我的缺乏努力(我提供了我自己的答案)......我只是无法完全理解它,要求更好的解释。 – skippr

+0

@anubhava cajac不匹配,我意识到这一点。我并不关心这里的情况,而是为什么。 – skippr

回答

1

英文这意指:匹配任何只包含字母的单词af

+2

啊,好吧,这是有道理的,我误解了开始和结束于操作员。我看到它的方式是“该字符串必须以一个字母(af)开始,并且必须以多一个字母(af)结尾......在我看来,它似乎适用于”cajac“,它以” ca“并以”ac“结尾 – skippr

0

你的模式,当分解:

  • ^断言在字符串的开始位置
  • [a-f]+匹配单个字符存在于下面的列表:

    • +之间一个和无限次,多次地,用之于根据需要
    • a-f A和F之间的范围中的单个字符(区分大小写)在所述串的端
  • $断言位置

您还可以在Regex101网页上看到您的模式的快速说明。

+0

这就是我对它的理解,但我似乎正在以不同的方式解读它。我看到它的方式是“该字符串必须以一个或多个字母(af)开始,并且必须以一个或多个字母(af) ......在我看来,它似乎适用于以“ca”开头并以“ac”结尾的“cajac” – skippr

+0

@dhira由于您正在锚定您的模式(使用'^'和'$'),它会匹配只有那些满足锚定条件的字符串 – hjpotter92

+0

https://regex101.com/r/vI4bX8/1 – iamnotmaynard