繁体   English   中英

正则表达式将字符串 split() 分成 2 部分。 任何字母和之后的所有内容

[英]Regular expression to split() the string into 2 parts. Any letters and everything after

输入字符串,输出 - 包含 2 个字符串的列表:
几个例子:

str1 = dir/?
str2 = dir c:\users /A/B
str3 = dir>1.txt

list1 = ['dir', '/?']
list2 = ['dir', ' c:\users /A/B'] #with space
list3 = ['dir', '>1.txt']

r"([a-zA-Z_]+)(.*)"应该这样做,尽管我对 #4 中下划线的存在感到困惑,因为您在标题中写了“任何字母”。

在代码中实际使用它:

import re
str1 = "dir/?"
m = re.match(r"([a-zA-Z_]+)(.*)", str1)
list1 = list(m.groups()) #list1 is now ['dir', '/?'], as desired

如果您实际上不想要下划线,则只需将其从第一个字符类中删除: r"([a-zA-Z]+)(.*)"

尝试这个。

str1 = 'dir/?'
j = s[:str1.index('r')+1:],s[str1.index('r')+1:]
list1 = list(j)

也试试。

list1 = re.split(r'([a-zA-Z]+)',str1)[1:]

包含更多信息可能对您有所帮助,但在 Python 中,您可以通过使用.split()函数避免正则表达式并将输出限制为 2 部分:

str = "dir c:\\users /A/B"
str.split(" ", 2)
# ['dir', 'c:\\users', '/A/B']

如果您必须排除没有空格的可能性,您可以使用lstrip删除前缀,然后删除任何空格。

str.lstrip('dir').lstrip()    

请注意额外的反斜杠以转义字符串中的反斜杠。

正则表达式肯定更灵活,但有时根据您的用例,更简单的解决方案可能更合适。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM