正则表达式问题:如何提取@与:之间的纯字符串(去除符号)
嘿,这问题我熟!你其实已经离正确答案很近了——你的正则表达式里已经包含了捕获组,只是没正确提取捕获组的内容而已。我给你两种靠谱的解决方案:
方法1:正确利用捕获组提取内容
你之前写的@([^.]*):其实已经把@和:之间的内容放在第一个捕获组里了,只是你可能取了整个匹配结果(也就是@server:),而不是捕获组里的内容。另外建议把[^.]*改成[^:]+,因为你要匹配到:为止,用[^:]+能精准匹配所有非:的字符,比[^.]*更贴合需求。
举个Python的实际用法例子:
import re target_str = "example@server:test123" # 使用修正后的正则,捕获@和:之间的内容 match_result = re.search(r'@([^:]+):', target_str) if match_result: # 提取第一个捕获组的内容,这就是你要的纯字符串 desired_text = match_result.group(1) print(desired_text) # 输出: server
方法2:用零宽断言直接匹配目标内容
如果你不想用捕获组,也可以用零宽断言来让正则直接匹配@和:之间的部分,不需要额外提取分组:
(?<=@)[^:]+(?=:)
(?<=@):正向肯定后查,确保当前位置前面是@[^:]+:匹配任意非:的字符(也就是你要的内容)(?=:):正向肯定预查,确保当前位置后面是:
同样用Python举例:
import re target_str = "example@server:test123" desired_text = re.search(r'(?<=@)[^:]+(?=:)', target_str).group() print(desired_text) # 输出: server
这两种方法都能完美得到你想要的server,选哪种看你自己的习惯就行~
内容的提问来源于stack exchange,提问作者new_linux_user
相关产品推荐
相关产品推荐

