我正在尝试使用Regex来解析模板中的某些内容。有开始标签和结束标签,但我只想在这些标签之间选择内容(以便我可以String.replace)
内容看起来像这样:
OpenTag
The Content I want
CloseTag
OpenTag The Content I want CloseTag
和我正在使用的正则表达式如下:
/(?<=OpenTag(\n))(.*?)(?=CloseTag)/msg
我遇到的问题是,有时可能会有换行符,而有时却没有。但是,一旦我通过(\n)?
在后视中将换行符设为可选时,换行符便会包含在捕获组中(即使看起来它应该是后面的外观的一部分)。
如果我不选择换行符,那么内容中的第二个示例将不匹配。
regex101.com上的示例,https://regex101.com/r/teBEQ9/2
答案 0 :(得分:2)
带有s
标志的点也与\n
字符匹配,并且由于它是可选的,因此将被捕获。使用Array.match()
并修剪结果:
const str = `OpenTag
The Content I want
CloseTag
OpenTag The Content I want CloseTag`
const result = str.match(/(?<=OpenTag)(.*?)(?=CloseTag)/msg).map(s => s.trim())
console.log(result)
答案 1 :(得分:1)