java正则表达式斜杠replace_为什么Java中的
⼩编典典
@Peter
Lawrey的答案描述了⼒学。“问题”是反斜杠在Java字符串⽂字和正则表达式的迷你语⾔中都是转义字符。因此,当您使⽤字符串⽂字来表⽰正则表达式时,要考虑两组转义…取决于正则表达式的含义。
但是为什么会这样呢?
java replace方法这是历史性的事情。Java最初根本没有正则表达式。Java String⽂字的语法规则是从C / C 借⽤的,C / C也没有内置的正则表达式⽀持。直到他们Pattern在Java 1.4
中以类的形式添加了regex⽀持之后,双重转义的尴尬才在Java中变得显⽽易见。
那么其他语⾔如何避免这种情况呢?
它们通过 在编程语⾔本⾝中
为正则表达式提供直接或间接的语法⽀持来实现。例如,在Perl,Ruby,Javascript和许多其他语⾔中,存在模式/正则表达式的语法(例如’/
pattern
/’),其中字符串⽂字转义规则不适⽤。在C#和Python中,它们提供了替代的“原始”字符串⽂字语法,其中反斜杠不能转义。(但是请注意,如果您使⽤普通的C#/
Python字符串语法,则会遇到Java双重转义的问题。)
为什么placeAll("\n","/"),placeAll("\\n","/")以及
第⼀种情况是字符串级别的换⾏符。Java regex语⾔将所有⾮特殊字符视为⾃⼰匹配。
第⼆种情况是反斜杠,其后是字符串级别的“ n”。Java regex语⾔将反斜杠解释为后跟“ n”的换⾏符。
最后⼀种情况是在字符串级别使⽤反斜杠后跟换⾏符。Java
regex语⾔⽆法将其识别为特定的(regex)转义序列。但是,在正则表达式语⾔中,反斜杠后跟任何⾮字
母字符表⽰后者。因此,反斜杠后跟换⾏符…的含义与换⾏符相同。
2020-09-09
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论