为了账号安全,请及时绑定邮箱和手机立即绑定

Regex 后视 (JS) 中的可选字符

Regex 后视 (JS) 中的可选字符

撒科打诨 2021-12-12 10:47:49
我正在尝试使用正则表达式来解析模板中的一些内容。有开始标签和结束标签,但我只想选择这些标签之间的内容(以便我可以使用 String.replace)内容如下所示:OpenTag  The Content I wantCloseTagOpenTag The Content I want CloseTag我正在使用的正则表达式如下所示:/(?<=OpenTag(\n))(.*?)(?=CloseTag)/msg我遇到的问题是,有时可能会有换行符,而有时则没有,但是一旦我在lookbehind via(\n)?中将换行符设为可选,换行符就会包含在捕获组中(即使它看起来应该成为背后的一部分)。如果我取消可选的换行符,那么我在内容中的第二个示例中将无法匹配。regex101.com 上的示例,https: //regex101.com/r/teBEQ9/2
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

带有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)


查看完整回答
反对 回复 2021-12-12
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

你可以使用类似的东西:

OpenTag\s*([^]*?)\s*CloseTag

你想要的文字将在 $1

https://regex101.com/r/FRbTKb/2


查看完整回答
反对 回复 2021-12-12
  • 2 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号