我有这样的文字:
2015-10-01 15:15:30 subject: Announcement: [Word To Find] Some other thext
我的目标是将日期与时间相匹配:
(?s)(?<=^)(.+?)(?= subject\: Announcement\: )
还有[ ]
(?s)(?<=\[)(.+?)(?=\])
如何在单个正则表达式中获得这两个结果?
答案 0 :(得分:3)
我打算使用正则表达式,虽然与其他答案类似,但已删除所有裁员:
1. "2015-10-01 15:15:30"
2. "Word To Find"
产生群体:
]
请参阅join。
冗余配置:
:
(?<=^)
^
背后的外观与sqlcmd -E -S .\SRVER1 -d MYDB -Q "EXEC dbo.master"
相同,因为两者都是零宽度断言答案 1 :(得分:1)
您可以使用简单的正则表达式:
(.*)\s+subject.*\[(.*?)\]
或者
(.*)\s+subject.*\[([^]]+)\]
第一组包含日期,第二组包含[]。
中的文本答案 2 :(得分:1)
您可以使用以下正则表达式来获得两者匹配:
(?<=^|\[)(.*?)(?=subject|\])
参见演示https://regex101.com/r/hU2iZ3/2
请注意,您只需在您的先行代币和下一个代币之间使用逻辑OR(|
)。
另请注意,如果您的文字中有另一个括号,则应使用否定字符类.*
:
(?<=^|\[)([^[\]]*?)(?=subject|\])
答案 3 :(得分:1)