正则表达式:匹配两个特定符号之间每次出现的破折号
Regex: Match every occurrence of dash in between two specific symbols
我有这个字符串:](-test-word-another)
我试图在 ]
和 )
之间找到每个出现的 -
基本上 return 应该是:](-
test-
word-
another)
目前我有 (?<=\]\()(-)(?=\))
但如果只有一个 -
提前致谢
试试这个:/(?<=\].*)-(?=.*\))/gm
在这里测试:https://regex101.com/r/xkmTZs/3
这基本上匹配所有 -
,前提是它们出现在 ]
之后和 )
之前。
你可以使用
text.replace(/]\([^()]*\)/g, (x) => x.replace(/-/g, '_'))
查看下面的演示:
const text = 'Word-word ](-test-word-another) text-text-.';
console.log( text.replace(/]\([^()]*\)/g, (x) => x.replace(/-/g, '_')) );
]\([^()]*\)
正则表达式匹配 ](
子字符串,然后是 (
和 )
以外的任何零个或多个字符,然后是 )
,然后然后匹配值中的所有 -
个字符(此处为 x
)使用 (x) => x.replace(/-/g, '_')
.
替换为 _
另一个单一的正则表达式解决方案看起来像
(?<=]\((?:(?!]\()[^)])*)-(?=[^()]*\))
参见 this regex demo。它匹配紧跟在 ](
之前的任何 -
和除 )
之外的任何零个或多个字符,这些字符不以 ](
字符序列开始,并且紧跟任何(
和 )
以外的零个或多个字符,然后是 )
个字符。
我有这个字符串:](-test-word-another)
我试图在 ]
和 )
之间找到每个出现的 -
基本上 return 应该是:](-
test-
word-
another)
目前我有 (?<=\]\()(-)(?=\))
但如果只有一个 -
提前致谢
试试这个:/(?<=\].*)-(?=.*\))/gm
在这里测试:https://regex101.com/r/xkmTZs/3
这基本上匹配所有 -
,前提是它们出现在 ]
之后和 )
之前。
你可以使用
text.replace(/]\([^()]*\)/g, (x) => x.replace(/-/g, '_'))
查看下面的演示:
const text = 'Word-word ](-test-word-another) text-text-.';
console.log( text.replace(/]\([^()]*\)/g, (x) => x.replace(/-/g, '_')) );
]\([^()]*\)
正则表达式匹配 ](
子字符串,然后是 (
和 )
以外的任何零个或多个字符,然后是 )
,然后然后匹配值中的所有 -
个字符(此处为 x
)使用 (x) => x.replace(/-/g, '_')
.
_
另一个单一的正则表达式解决方案看起来像
(?<=]\((?:(?!]\()[^)])*)-(?=[^()]*\))
参见 this regex demo。它匹配紧跟在 ](
之前的任何 -
和除 )
之外的任何零个或多个字符,这些字符不以 ](
字符序列开始,并且紧跟任何(
和 )
以外的零个或多个字符,然后是 )
个字符。