REGEX python找到上一个字符串

时间:2015-06-22 15:08:59

标签: python regex string

我试图查找字符串的最后一个单词后跟空格或特殊字符,如果是,则返回没有此空格/特殊字符的字符串

例如:

"do you love dogs ?" ==> return "do you love dogs"
"i love my dog " (space after dog) ==> return "i love my dog"
"do you love dogs?"  ==> return "do you love dogs"

到目前为止,我试过了:

re.search(re.compile(r"^[^\,\(\[\.\!\?]*"), mystring)

它适用于最后一个示例,但不是前两个示例(它保留了第二个示例的空间),我不知道如何处理它。

编辑:特殊字符是:'。','!','?','(', ' [',','起初然后每隔一个非数字/字母除外

2 个答案:

答案 0 :(得分:0)

如果你想从这3个句子的末尾删除空格和特殊字符,使用正则表达式,这是你可以做到的一种方法:

import re

print re.findall(r'\w+\s\w+\s\w+\s\w+', "i love my dog ")
print re.findall(r'\w+\s\w+\s\w+\s\w+', "do you love dogs ?")
print re.findall(r'\w+\s\w+\s\w+\s\w+', "do you love dogs?")

输出:

['i love my dog']
['do you love dogs']
['do you love dogs']

答案 1 :(得分:-1)

更新:这将检查是否存在一个句子,后跟特殊字符。如果没有特殊字符,则返回false,并且您的原始句子位于捕获组1中。

Updated Regex101 Example

r"(.*[\w])([^\w]+)"

或者(没有第二个捕获组):

Regex101 Example - no second capture group

r"(.*[\w])(?:[^\w]+)"

这就是你正在寻找的东西吗?