我如何使用正则表达式将字符串的开头(位于某个用户指定的字符之前)放入组中?

How do I use a regular expression to put the beginning of a string, preceding some user-specified character, into a group?

有人问过这个问题 here,但我不想要 python 特定的解决方案。它应该可以在 JavaScript 和任何其他主流语言中使用。必须是正则表达式。

假设分隔符是“!

下面的 table 显示了几个样本输入的预期行为

+------------------------+--------+
|         INPUT          | OUTPUT |
+------------------------+--------+
| "aaaa!bbbb"            | "aaaa" |
| "aaaa"                 | "aaaa" |
| "aaaa!bbbb!ccccc!dddd" | "aaaa" |
| "aaaa!"                | "aaaa" |
| "!aaaaa"               | ""     |
+------------------------+--------+    

我尝试了以下方法但无济于事:

"^[^!]*$(!)"

最后不需要 (!)。只需使用 ^([^!]*).

您可以对 ! 之前的部分使用捕获组,并将匹配项替换为第一组:

^([^!]+)($|!.*$)

Regex 101 demo