java正则表达式来匹配带有换行符的某些模式
我想编写正则表达式以匹配以下模式:
From: ***********************
Sent: ***********************
To: ***********************
Subject: *******************
我把正则表达式写成
.*From:.+(\n)Sent:.+(\n)To:.+(\n)Subject:.+(\n).*
但这是行不通的。请帮助我,因为我是新的正则表达式
# 1 楼答案
这可以通过以下方式实现:
如果使用
PCRE
(即PHP
等),代码就可以工作参见a demo here on regex101.com(带有
m
和x
标志)# 2 楼答案
你可以用这样的东西
From:.+\nSent:.+\nTo:.+\nSubject:.+
您提供的正则表达式可能会失败,因为您不需要起始
.*
,因为您希望从“from:”部分捕获如果你只想捕捉文本
From:(.+)\nSent:(.+)\nTo:(.+)\nSubject:(.+)
在哪里
1美元->;来自文本
$2->;发送文本
3美元->;发短信
4美元->;主题文本
您可以使用任何使用任何语言的函数的正则表达式来获取这些捕获的组
# 3 楼答案
在我看来,你可以使用这样的正则表达式:
[Regex Demo]
# 4 楼答案
由于两个可能的原因,您的正则表达式不起作用:
\r\n
、或\r
、或\n
(甚至更多,\u000B
、\u000C
、\u0085
、\u2028
或\u2029
),但您只在LF中编码。添加可选的CR(回车,\r
)会有所帮助李>Subject:...
之后,没有换行符,所以需要删除它李>你可以用
用
Matcher#find()
搜索部分匹配项参见regex demo
以及IDEONE demo