RegEx 的逐项含义:“(/.*)?”

RegEx 的逐项含义:“(/.*)?”

我正在尝试确定这个正则表达式的每个元素:“(/.*)?”

以下是我迄今为止自学的知识:

() == 将正则表达式分组在一起

/ == ???

. == 等于任意一个字符

* == 等于零个或更多前一个字符(在这种情况下,前一个字符是否为“。”?)

? == 等于零或一个前一个字符(可能是 (/.*) 所代表的任何内容/所有内容,对吗?)

我可以得到帮助来填补空白吗?例如:在这种情况下“/”是什么意思?

答案1

首先,正则表达式有几种不同的风格:简单grep、扩展egrep、Perl 类;可能还有更多。它们有细微的不同;首先是分组,(foo|bar|baz)puregrep不支持,但egrepPerl 却支持。

在您的具体示例中,您正确地解读了各个部分。/实际上是一个正斜杠,没有任何特殊含义。如果它是一个反斜杠\,它将转义以下字符,即如果它在该上下文中具有特殊含义,它将失去该特殊含义:\.表示“文字句点”,而不是“任何字符”。

不同变体的要点是:你需要知道哪一个与你的上下文相关。如果是延长正则表达式(egrep 或 Perl),(实际上)意味着分组,如果是简单正则表达式(grep),它就是文字括号。

关于这个主题已经有整本书了,网上也有很多教程。你可能想先从这方面入手man grep,然后再逐步推进。

正则表达式的许多奇特部分很少需要;您大多可以使用基础知识,并在需要时(或当您必须理解别人的代码时)查找更神秘的东西。

相关内容