匹配两个字符串之外的所有内容
Match everything outside of two strings
对于
的输入
*something here*another stuff here
我想匹配两个星号 (*) 之外的所有内容。
正则表达式后的预期输出:
another stuff here
我想出了如何匹配 (*) /(?<=\*)(.*)(?=\*)/
内部的所有内容,但我无法匹配外部的所有内容。注意到我不想匹配 *.
您可以删除星号和 trim 之后的字符串之间的子字符串:
s.replace(/\*[^*]*\*/g, '').trim()
s.replace(/\*.*?\*/g, '').trim()
参见regex demo。
详情
\*
- 一个星号
[^*]*
- 除了星号 之外的任何零个或多个字符
.*?
- 除换行字符外的任何零个或多个字符,尽可能少(注意:如果您使用 .*
,您将在字符串在星号之间有多个子字符串的情况)
\*
- 一个星号
查看 JavaScript 演示:
console.log("*something here*another stuff here".replace(/\*[^*]*\*/g, '').trim())
// => another stuff here
您可以 split
带有 * anything *
的字符串,然后 join
字符串以获得结果。
const mystring = "*something here*another stuff here";
const result = mystring.split(/[*].*[*]/).join("");
console.log(result);
对于
的输入*something here*another stuff here
我想匹配两个星号 (*) 之外的所有内容。
正则表达式后的预期输出:
another stuff here
我想出了如何匹配 (*) /(?<=\*)(.*)(?=\*)/
内部的所有内容,但我无法匹配外部的所有内容。注意到我不想匹配 *.
您可以删除星号和 trim 之后的字符串之间的子字符串:
s.replace(/\*[^*]*\*/g, '').trim()
s.replace(/\*.*?\*/g, '').trim()
参见regex demo。
详情
\*
- 一个星号[^*]*
- 除了星号 之外的任何零个或多个字符
.*?
- 除换行字符外的任何零个或多个字符,尽可能少(注意:如果您使用.*
,您将在字符串在星号之间有多个子字符串的情况)\*
- 一个星号
查看 JavaScript 演示:
console.log("*something here*another stuff here".replace(/\*[^*]*\*/g, '').trim())
// => another stuff here
您可以 split
带有 * anything *
的字符串,然后 join
字符串以获得结果。
const mystring = "*something here*another stuff here";
const result = mystring.split(/[*].*[*]/).join("");
console.log(result);