Ruby 对下面的正则表达式有什么解释吗?
我在ruby代码中遇到了以下正则表达式,有人可以向我详细介绍一下吗Ruby 对下面的正则表达式有什么解释吗?,ruby,regex,Ruby,Regex,我在ruby代码中遇到了以下正则表达式,有人可以向我详细介绍一下吗 [\w-]+\.(?:doc|txt)$ 特别是我认为我不清楚[\w-]+\和?:这是一个由一个或多个字母/数字/下划线/连字符组成的序列,后跟句点,在一行的末尾后跟doc或txt [\w-]是字母/数字/下划线/连字符 \。是一个转义句点 (?:…)是一个分组(用于表示doc和txt之间的选项),它不会作为捕获的子字符串出现在结果中 它可能是为搜索嵌入多行字符串中的扩展名为doc或txt的文件名而编写的。或者,如果该正则
[\w-]+\.(?:doc|txt)$
特别是我认为我不清楚
[\w-]+\
和?:
这是一个由一个或多个字母/数字/下划线/连字符组成的序列,后跟句点,在一行的末尾后跟doc
或txt
是字母/数字/下划线/连字符[\w-]
是一个转义句点\。
…(?:
是一个分组(用于表示)
和doc
之间的选项),它不会作为捕获的子字符串出现在结果中txt
它可能是为搜索嵌入多行字符串中的扩展名为
doc
或txt
的文件名而编写的。或者,如果该正则表达式的作者很愚蠢(将$
误认为\z
),那么它可能只是将文件名与该扩展名匹配。\w表示任何单词字符
在这个上下文中,减号仅仅意味着减号字符
(?:doc | txt)表示匹配doc或txt
因此,任何单词char或a减号重复一次或多次,后跟一个点,后跟doc或txt,并且模式必须位于行的末尾
为了清楚起见,作者应该略过负号。imho有一个在线正则表达式测试器,可在 您可以使用它来分析、验证或调试正则表达式字符串。这已经节省了我很多时间 您的正则表达式在该工具的帮助下自动详细说明:
/[\w-]+\.(?:doc|txt)$/
[\w-]+ match a single character present in the list below
Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\w match any word character [a-zA-Z0-9_]
- the literal character -
\. matches the character . literally
(?:doc|txt) Non-capturing group
1st Alternative: doc
doc matches the characters doc literally (case sensitive)
2nd Alternative: txt
txt matches the characters txt literally (case sensitive)
$ assert position at end of the string
它表示仅包含单词字符(a-z、a-z、0-9和下划线)和连字符的文件名,扩展名为
.doc
或.txt
具体地说,
匹配一个单词字符\w
匹配单词字符或连字符[\w-]
匹配一个或多个这样的字符[\w-]+
匹配一个句点\。
构成一个非捕获组(?:)
匹配(?:doc | txt)
序列或doc
序列txt
- 在ruby中,
匹配一行的末尾$