我有一个问题,在我的项目。我想做什么?我需要得到所有的单词在python代码下划线分割:
text = "i.am - M_o_h_a_m_m_e_d - and - _1_5_y_o - name - moh_mmed - 2_8_j - i___a_m"
re.findall(r'?????' , text)
我需要得到:
['M_o_h_a_m_m_e_d','_1_5_y_o','i___a_m']
注意:如果单词以数字开头,如(15yo),则在起始数字前将加下划线
错误:M_o_h_a_m_m_e_d,M_o_h_a_m_m_e_d
错误:1_5年
3条答案
按热度按时间plupiseo1#
如果你想要一个纯正则表达式的解决方案,你可以使用下面的正则表达式,
这个正则表达式基本上是下面解释的两个子正则表达式的OR,
[a-zA-Z]_+)+[a-zA-Z0-9]
-以单个字母开头,后跟一个或多个下划线,整个单词重复一次或多次,最后以字母或数字结尾_+[a-zA-Z0-9])+
-如果单词以下划线开头,则后面应跟一个字母或数字,并且重复出现一次然后使用
|
和?:
对两个正则表达式进行OR运算,使用括号(
和)
使其成为一个非捕获组,然后您将得到上面提到的整个正则表达式。bzzcjhmw2#
下面是一个非正则表达式的方法:
输出:
假设规则为:
1.单词用下划线分隔,但以下情况除外:
1.如果后面两个字符是数字和字母,并且
1.第一个位置的数字前面加下划线。
EDIT:使用来自注解的更新输入,代码简化了:
输出:
2g32fytz3#
您可以使用正则表达式模式: