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

问题描述 投票:0回答:3

此问题被问到here,但我不希望使用python特定的解决方案。它应该可以在JavaScript和任何其他主流语言中工作。它必须是一个正则表达式。

假设分隔符是“ !

下表显示了一些示例输入的期望行为

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

我尝试以下操作均无济于事:

^[^!]*$(!)

python regex regex-negation regex-group
3个回答
5
投票

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


0
投票

您可以将捕获组用于直到(但不包括)!的部分,并将匹配项替换为第一组:

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

Regex 101 demo


0
投票
import re
text = """
aaaa!bbbb
aaaa
aaaa!bbbb!ccccc!dddd
aaaa!
!aaaaa
"""
print re.findall(r'^[^!]*', text, re.MULTILINE)
© www.soinside.com 2019 - 2024. All rights reserved.