我有一些字符串,其中包括名称,有时在字符串中包含用户名,后跟日期时间戳:
GN1RLWFH0546-2020-04-10-18-09-52-563945.txt
JOHN-DOE-2020-04-10-18-09-52-563946t64.txt
DESKTOP-OHK45JO-2020-04-09-02-27-11-451975.txt
我想从这个字符串中提取用户名:
GN1RLWFH0546
JOHN-DOE
DESKTOP-OHK45JO
我尝试过不同的正则表达式模式,最接近我提取的是:
GN1RLWFH0546
DESKTOP
JOHN
使用以下正则表达式模式:
names = re.search(r"\(?([0-9A-Za-z]+)\)?", agent_str)
print(names.group(1))
您可以获取第一次出现
-
+位+-
之前的所有文本:如果数字必须正好是4位数字(例如,如果是一年),则将
+
替换为{4}
:见regex demo
详细信息
^
-字符串的开头.*?
-除换行符以外的任何0+字符,尽可能少(?=-\d+-)
-直到第一次出现-
和1+个数字(或者,如果使用了\d{4}
,正好是四个数字),然后是-
(此部分不会添加到匹配值中,因为正向前瞻是一种非消耗模式)李>见Python demo:
输出:
下面的正则表达式怎么样:
(.*)-\d{4}-
。这匹配任何后跟连字符、四位数字和另一个连字符的内容使用上述正则表达式,第一组是用户名ala:
我建议去掉你不想要的尾随内容,留下你想要的:
这张照片是:
请参阅下面的regex演示
Demo
相关问题 更多 >
编程相关推荐