re.split()在一些字符之后不会分裂

时间:2017-04-03 22:46:52

标签: python regex

我正在尝试分割一个字符串,无论我做什么,字符串都不会在一些字符之后分裂,不仅空间无效(对于其他字符也是如此)。我正在学习' re&#39 ;模块,你可以更准确吗?谢谢你。

import re
String = "Integrity Home Care has an opening on our Leadership Team for a Salaried Private Care Nursing Supervisor.TOoooooo"
print(re.split(r'\s*',String,re.I|re.M))

给出以下结果: After Execution

3 个答案:

答案 0 :(得分:2)

您正在传递re.I|re.M(10)作为maxsplit参数的值,因此它会在您告知之后十次停止分割。

如果您不想传递maxsplit的值,请为标志使用命名参数:

re.split(r'\s*', String, flags=re.I|re.M)

另一个选择是不将标志作为参数传递,而是将它们包含在正则表达式中。

re.split(r'(?im)\s*',String)

我在这些示例中保留了不区分大小写的标记,但是你的正则表达式并不匹配任何可能包含案例的字符,所以你可以将其删除。

现在到了正则表达式本身。 *匹配前一个模式的零次或多次出现。这几乎与字符串中的任何地方都匹配,因此理论上字符串可以在任何地方分割,这就是为什么你会得到关于非空模式的警告。这些匹配会被忽略,但最好使用+,这意味着一个或更多次出现。

最后,我不得不提到你可能只能使用String.split(),默认情况下会拆分空格,所以你可能会取消正则表达式。

答案 1 :(得分:0)

re.split(r'\s*',String,re.I|re.M)必须为re.split(r'\s*',String,flags=re.I|re.M)。第三个位置参数ro re.split是片段的最大数量,您将其设置为re.I|re.M,即10。

答案 2 :(得分:0)

您也可以从代码中删除re.I|re.M。试试这个:

print(re.split(r'\s',String))

输出:

['Integrity', 'Home', 'Care', 'has', 'an', 'opening', 'on', 'our', 'Leadership', 'Team', 'for', 'a', 'Salaried', 'Private', 'Care', 'Nursing', 'Supervisor.TOoooooo']