Javascript 正则表达式在两个词中进行多重搜索
Javascript Regex multiple search in two words
我想将 Regex 和两个单词之间的结果传输到一个数组,但不幸的是我不能这样做。你能帮帮我吗?
在本文中
[row]
Row text1
[rowEnd]
[row]
Row text2
[rowEnd]
我会搜索这个内容,
[row]
(.*)
[rowEnd]
基于此我写了一个这样的正则表达式
/(\[row\]+)(.*)(\[rowEnd\])/gs
不过,这样取的是整体,不是一片片的。
预先感谢您的帮助。
在 Javascript 中,您可以使用
^\[row]\r?\n([^]*?)\r?\n\[rowEnd]
^
字符串开头
\[row]\r?\n
匹配 [row]
和一个换行符
(
捕获 组 1
[^]*?
匹配 0+ 次任何字符,包括换行符非贪婪
)
关闭组 1
\r?\n\[rowEnd]
匹配一个换行符和[rowEnd]
const regex = /^\[row]\r?\n([^]*?)\r?\n\[rowEnd]/gm;
const str = `[row]
Row text1
[rowEnd]
[row]
Row text2
[rowEnd]`;
Array.from(str.matchAll(regex), m => console.log(m[1]));
没有正则表达式
- 按
"[row]"
拆分数据。
- 然后过滤那些以
"[rowEnd]"
结尾的字符串。
- 最后从过滤后的字符串中删除
"[rowEnd]"
。
const
data = "[row]Row text1[rowEnd][row]Row text2[rowEnd]",
res = data
.split("[row]")
.filter((s) => s.endsWith("[rowEnd]"))
.map((s) => s.slice(0, -8));
console.log(res);
我想将 Regex 和两个单词之间的结果传输到一个数组,但不幸的是我不能这样做。你能帮帮我吗?
在本文中
[row]
Row text1
[rowEnd]
[row]
Row text2
[rowEnd]
我会搜索这个内容,
[row]
(.*)
[rowEnd]
基于此我写了一个这样的正则表达式
/(\[row\]+)(.*)(\[rowEnd\])/gs
不过,这样取的是整体,不是一片片的。
预先感谢您的帮助。
在 Javascript 中,您可以使用
^\[row]\r?\n([^]*?)\r?\n\[rowEnd]
^
字符串开头\[row]\r?\n
匹配[row]
和一个换行符(
捕获 组 1[^]*?
匹配 0+ 次任何字符,包括换行符非贪婪
)
关闭组 1\r?\n\[rowEnd]
匹配一个换行符和[rowEnd]
const regex = /^\[row]\r?\n([^]*?)\r?\n\[rowEnd]/gm;
const str = `[row]
Row text1
[rowEnd]
[row]
Row text2
[rowEnd]`;
Array.from(str.matchAll(regex), m => console.log(m[1]));
没有正则表达式
- 按
"[row]"
拆分数据。 - 然后过滤那些以
"[rowEnd]"
结尾的字符串。 - 最后从过滤后的字符串中删除
"[rowEnd]"
。
const
data = "[row]Row text1[rowEnd][row]Row text2[rowEnd]",
res = data
.split("[row]")
.filter((s) => s.endsWith("[rowEnd]"))
.map((s) => s.slice(0, -8));
console.log(res);