繁体   English   中英

如何在正则表达式中指定新行或字符串结尾?

[英]How to specify new line OR the end of string in regex?

我的模式不适用于所有字符串,因为如果它到达没有新行的字符串\\n它会抛出异常。 如何修改(?:L.*?)\\\\n以使其匹配,直到\\\\n或者字符串的结尾?

Pattern patternL = Pattern.compile("(?:L of .*?)\\n", Pattern.DOTALL);
Matcher matcherL = patternL.matcher(text);
matcherL.find();

简单使用: (?:\\\\n|$) ,所以你的正则表达式变为:

Pattern patternL = Pattern.compile("(?:L of .*?)(?:\\n|$)", Pattern.DOTALL);

对于Java,您需要匹配行尾或单个LF字符:

(\\n|$)

也许

(\\r\\n|\\n|$)

如果你想准确了解换行符,也包括CRLF

@ Sniffer关于匹配换行符或行尾答案是正确的,但是根据您在上面发布的代码(?:L of .*?) ,这不会匹配Location或任何单词,除了字母L

Pattern patternL = Pattern.compile("Location of .*?(?:\\n|$)", Pattern.DOTALL);

Pattern.MULTILINE告诉Java接受锚点^$在每行的开头和结尾匹配(否则它们只匹配整个字符串的开头/结尾)。

Pattern patternL = Pattern.compile("^Location of .*", Pattern.MULTILINE);

我从上面的非贪婪到贪婪的比赛,以匹配尽可能多的比赛 ,使用非贪婪的比赛将匹配尽可能少的比赛,除非你使用终点线锚$

通过匹配尽可能少的数量来看看我的意思

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM