java正则表达式匹配空白、任意字符和/或给定序列的换行符
我有三种不同的可能场景与下面解释的正则表达式相匹配
首先,我需要匹配的文件输入:
--1--(介于和之间的任何内容:
On whatever:
--2--(在相邻的:)
On:
--3--(On和之间的任何字符:)
On=:
--4--(O和:之间的an=和/n)
On=
:
这是我想要匹配的正则表达式,但运气不好
// String text = <file contents from above>
Pattern PATTERN = Pattern.compile("^(On\\s(.+):)$", Pattern.MULTILINE | Pattern.DOITALL);
Matcher m = PATTERN.matcher(text);
if (m.find()) {
System.out.println("Not sure if this is correct to get all 4cases to step in here???");
}
谢谢
# 1 楼答案
下一个呢?它更简单
例如:
输出:
# 2 楼答案
通过
^(On\\s(.+):)$
你是说:“从行的开始,我想匹配'On'后跟一个空格,后跟至少一个任何类型的字符,后跟冒号,然后是行的结尾”使用这个regexp,您将匹配第一个案例
"(.+)" ==> 'whatever'
;但是,第二种情况将不匹配(表达式将失败,因为它期望在“On”之后有一个空格,然后在冒号之前至少有另一个字符;第三种情况也不匹配,因为它缺少一个空格;最后,第四种情况将匹配正常因此,正如托尼回答的那样,
^On.*:$
会起作用。但是,我猜你是在尝试将“On”部分后面的内容分组,所以我猜你可以使用^(On\\s*(\\S*)\\s*:)$
,这与说“match'On'后跟任意序列的空格,后跟由任意序列的非空格字符组成的标记,后跟另一序列的空格,然后是冒号相同。这也会给您两个组:第一个组将包含“Onwhere:“第二个将仅包含任何部分# 3 楼答案
我可能误解了,但我很确定你想得太多了。所有这些场景基本上都可以简化为:On和:,包括换行符或空字符串。因此,从我所知道的来看,
On.*:
应该可以做到这一点# 4 楼答案
我想你在找这样的东西
或许