美元符号正则表达式和新的线字符

Dud*_*ude 13 regex

我知道美元符号用于匹配字符串末尾的字符,以确保搜索不会停留在字符串的中间,而是继续直到字符串的结尾.

但它如何处理换行符,它是否恰好在新行字符之前匹配,还是将其考虑在内.

我在eclipse正则表达式中检查了它,因为正则表达式匹配的字符串数组 ([A-Za-z ]+)$\n工作,而不是相反([A-Za-z ]+\n)$

Roh*_*ain 16

需要注意的是^$zero-width令牌.所以,他们不匹配任何角色,而是匹配a position.

  • ^ 匹配字符串中第一个字符之前的位置.
  • $匹配newline字符串中第一个位置之前的位置.

所以,String之前的意思$当然不包括newline,这就是为什么([A-Za-z ]+\n)$你的正则表达式失败了,并且([A-Za-z ]+)$\n成功了.

简单来说,你$应该跟a newline,而不是其他角色.


Mar*_*der 12

如果模式以换行符结尾,则$通常在该字符之前匹配.这至少对于Perl,PCRE,Java和.NET来说是如此.(编辑:正如Tim Pietzker在评论中指出的那样,\r不被认为是.NET的换行符)

引入了这一点,因为从一行读取的输入以换行符(至少在Perl中)终止,这可以通过这种方式方便地忽略.

使用\z以表示是字符串的结尾(如果它是由你的正则表达式引擎支持).

资源