这个正则表达式意味着什么? (^。)(\ w +)(。$)$ 2

时间:2015-05-12 19:22:14

标签: c# regex

(^.)(\w+)(.$) $2删除了第一个和最后一个字符,但我不确定它是如何工作的。

我的理解:

(^。)匹配行首的任何一个字符。 (。$)匹配行尾的任何一个字符。 (\ w +)任何单词字符(至少需要一个字符) $ 2调用第二个括号(\ w +)

测试1:

Input: 91239

Output: 123

的Test2:

Input: \123\

Output: 123 

为什么删除反斜杠?这是一种可以接受的方法来删除反斜杠(行的开头和结尾)吗?

Test3的:

Input: /123/5

Output: /123/5

我迷失在这里。为什么它不适用于/ 123/5。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

为什么删除反斜杠?这是一种可以接受的方法来删除反斜杠(行的开头和结尾)吗?

删除反斜杠,因为.匹配任何字符,包括\。第1组是第一个反斜杠,第2组是每个字符但第一个和最后一个,第3组是最后一个反斜杠。

  

我迷失在这里。为什么它不适用于/ 123/5。

\w匹配0-9,a-z,A-Z和_。 \w+消费123。以下.消费/。以下$与剩余的5不匹配,因此与该输入不匹配。

答案 1 :(得分:1)

  

为什么它对/ 123/5不起作用。

\w相当于[a-zA-Z0-9_].匹配任何字符..所以在/123/5之前/匹配1之前^.5匹配.$,但123/未匹配,因为/未与\w匹配

正则表达式(^.)(\w+)(.$)表示(解释):

  • (^.)以任何字符开头(括号=>捕获组1)
  • (\w+)后跟集(+)中的多个[a-zA-Z0-9_]个字符(括号=>捕获组2)
  • (.$)以任何字符结尾(括号=>捕获组3)

最后$2表示反向捕获第2组..即由模式(\w+)捕获的组。