正则表达式python`r'*(.:?!)*'`

正则表达式python`r'*(.:?!)*'`,python,regex,Python,Regex,我想接受包含以下字符的单词:。:?!' 我尝试将此作为模式:r'*(.|::|?|!)*”但不起作用 如何使用pythonre实现这一点 我希望运行的代码如下所示: import re pattern = r'*(.|:|?|!)*' word = '.Flask' match = re.match(pattern, word) if match: print('yes') 例如,我想接受这些词:“.flask”,“flask.”,“!烧瓶“,”烧瓶!' 甚至是非ascii字符。所以我

我想接受包含以下字符的单词:
。:?!'
我尝试将此作为模式:
r'*(.|::|?|!)*”
但不起作用

如何使用python
re
实现这一点

我希望运行的代码如下所示:

import re
pattern = r'*(.|:|?|!)*'
word = '.Flask'
match = re.match(pattern, word)
if match:
    print('yes')
例如,我想接受这些词:
“.flask”
“flask.”
“!烧瓶“
”烧瓶!'

甚至是非ascii字符。所以我想也包括这些词:
。日本語
日本語.


这就是我想使用
*
符号的原因。

如果您想匹配以这些字符之一开头或结尾的单词,此正则表达式应该适合您的需要:

pattern = r'[.:?!][^ ]*|[^ ]*[.:?!]'
或者更好地使用单词边界:

pattern = r'\b[.:?!][^ ]*\b|\b[^ ]*[.:?!]\b'
解释:

[.:?!][^]*
匹配以
[.:?!]
开头的单词,后跟除空格以外的所有字符

[^]*[.:?!]
匹配以任何字符开头的所有单词,以
[.:?!]字符结尾的空白除外。
字符


\b
匹配单词边界。

在发布问题后,您将继续包括条件。这使得目前发布的答案无效。对不起,我会小心处理:(这些字符应该在一行的开头还是结尾?是的,必须包括其中一个字符谢谢@miindlek和所有帮助我的人!