javascript - 提取两个标记之间的子字符串。第二个 token 可能丢失

标签 javascript regex

你好,

我需要提取字符串的一部分,如下所示:

"some_text MarkerA some_text_to_extract MarkerB some_text"
"some_text MarkerA some_text_to_extract"

在这两种情况下,我都需要提取 some_text_to_extractMarkerA, MarkerB - 预定义的文本字符串。

我试过这个正则表达式,但没有成功:

".*\sMarkerA(.*)MarkerB.*" - does not work in case 2
".*\sMarkerA(.*)(?=MarkerB)?.*" - wrong result "some_text_to_extract MarkerB some_text" 
".*\sMarkerA(.*)(?:MarkerB)?.*" - does not work at all

你能帮我解决这个问题吗?

最佳答案

首先去掉开头和结尾的.*;您不需要匹配整个字符串。然后使用交替来匹配结束定界符或字符串结尾。

"MarkerA(.*?)(?:MarkerB|$)"

关于javascript - 提取两个标记之间的子字符串。第二个 token 可能丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1083896/

相关文章:

javascript - 为什么子组件的 prop 只显示父组件的初始值?

javascript - 覆盖 Javascript 中的方法

javascript - 正则表达式用工作表名称替换 Excel 公式

java - 多行java正则表达式中的反向引用

javascript - 如何在sqlite中检查数据库中是否存在表名(电话差距)

JavaScript 正则表达式 : how to create a single matching group

javascript - 从具有相同类名的多个表中一次搜索一张表

java - 如何使用 Replace 方法替换数字前的空格?

python - 正则表达式匹配第一个大写字母的单词

php - 正则表达式删除除提供的域相关链接之外的外部链接 php