捕获可选的周围字符

capture optional surrounding characters

我不太懂正则表达式,所以我不确定如何实现以下目标:

我想从输入中捕获任意字符串,这些字符串可能包含也可能不包含“$”字符。如果“$”字符出现在字符串的开头,则末尾的“$”字符也必须出现。

目前我有

^\w+([_.-]\w+)*$

大致翻译为:

  1. 任意字字符
  2. 捕获组开始
  3. '_'、'.'、'-'的任意字符
  4. 在可选的\n
  5. 之前

因此有效匹配为:

test
test-5
test.1.3
test-alpha.2

现在我想让这成为可能

$test$

但不是...

$test (or test$)
^(?:(?:\w+(?:[_.-]\w+)*)|$test$)$

最好用 | 添加,而不是修改原始 one.See 演示。

https://regex101.com/r/wU7sQ0/32