用正则表达式去除标点符号 - python
Strip punctuation with regular expression - python
我想去除字符串开头和结尾的所有标点符号(点除外),但不去除字符串的中间部分。
例如对于原始字符串:
@#%%.Hol$a.A.$%
我想从单词的结尾和开头而不是从单词的中间删除单词 .Hol$a.A.
。
另一个例子可能是字符串:
@#%%...&Hol$a.A....$%
在这种情况下,返回的字符串应该是..&Hol$a.A....
,因为我们不关心允许的字符是否重复。
想法是删除单词开头和结尾的所有标点符号(点除外)。一个词定义为\w
and/or一个.
一个实际的例子是字符串'Barnes&Nobles'
。对于文本分析,将 Barnes&Nobles
识别为单个实体很重要,但没有 '
如何使用 Regex 实现目标?
根据你对标点符号进行条带化的含义,你可以修改以下代码:
import re
res = re.search(r"^[^.]*(.[^.]*.([^.]*.)*?)[^.]*$", "@#%%.Hol$a.A.$%")
mystr = res.group(1)
这将去除表达式中点前后的所有内容。
警告,如果字符串不匹配,您将必须检查 None 的结果是否不同。
使用这个简单易用的正则表达式:
[\w.].*[\w.]
它将完全匹配您想要的结果,仅此而已。
[\w.]
匹配任何字母数字字符和点
.*
匹配任何字符(通常换行符除外)
[\w.]
匹配任何字母数字字符和点
要更改分隔符,只需更改 []
括号内的允许字符集即可。
Check this regex out on regex101.com
import re
data = '@#%%.Hol$a.A.$%'
pattern = r'[\w.].*[\w.]'
print(re.search(pattern, data).group(0))
# Output: .Hol$a.A.
我想去除字符串开头和结尾的所有标点符号(点除外),但不去除字符串的中间部分。
例如对于原始字符串:
@#%%.Hol$a.A.$%
我想从单词的结尾和开头而不是从单词的中间删除单词 .Hol$a.A.
。
另一个例子可能是字符串:
@#%%...&Hol$a.A....$%
在这种情况下,返回的字符串应该是..&Hol$a.A....
,因为我们不关心允许的字符是否重复。
想法是删除单词开头和结尾的所有标点符号(点除外)。一个词定义为\w
and/or一个.
一个实际的例子是字符串'Barnes&Nobles'
。对于文本分析,将 Barnes&Nobles
识别为单个实体很重要,但没有 '
如何使用 Regex 实现目标?
根据你对标点符号进行条带化的含义,你可以修改以下代码:
import re
res = re.search(r"^[^.]*(.[^.]*.([^.]*.)*?)[^.]*$", "@#%%.Hol$a.A.$%")
mystr = res.group(1)
这将去除表达式中点前后的所有内容。 警告,如果字符串不匹配,您将必须检查 None 的结果是否不同。
使用这个简单易用的正则表达式:
[\w.].*[\w.]
它将完全匹配您想要的结果,仅此而已。
[\w.]
匹配任何字母数字字符和点.*
匹配任何字符(通常换行符除外)[\w.]
匹配任何字母数字字符和点
要更改分隔符,只需更改 []
括号内的允许字符集即可。
Check this regex out on regex101.com
import re
data = '@#%%.Hol$a.A.$%'
pattern = r'[\w.].*[\w.]'
print(re.search(pattern, data).group(0))
# Output: .Hol$a.A.