如何从含特殊字符的字符串中提取域名?求正则或解决方案
解决方案
正则表达式方案
可以使用以下正则表达式捕获目标域名:
^(.+?)(?=-)
- 规则说明:
^匹配字符串的起始位置(.+?)以非贪婪模式匹配任意字符,将这部分作为捕获组(即你要的域名)(?=-)正向预查,确保匹配的内容后面紧跟一个连字符-,但不会把连字符包含到结果中
针对你的输入字符串,匹配结果完全符合预期:
输入:
abc.pri-from-somestring→ 捕获结果:abc.pri
输入:abc-de.pri-idx-somestring→ 捕获结果:abc-de.pri
输入:abc.org.au-sop-somestring→ 捕获结果:abc.org.au
字符串分割方案
如果不想使用正则,也可以通过字符串分割直接提取:
以Python为例,代码如下:
input_strings = [ "abc.pri-from-somestring", "abc-de.pri-idx-somestring", "abc.org.au-sop-somestring" ] for s in input_strings: # 按第一个连字符分割,取第一部分 domain = s.split('-', 1)[0] print(domain)
运行后输出:
abc.pri abc-de.pri abc.org.au
- 规则说明:
split('-', 1)表示仅按第一个-分割字符串,返回的列表第一个元素就是目标域名,能完美适配你的场景。
内容的提问来源于stack exchange,提问作者Assaf Schwartz
相关产品推荐
相关产品推荐

