首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带正则表达式的标点符号- python

带正则表达式的标点符号- python
EN

Stack Overflow用户
提问于 2016-05-02 05:10:39
回答 2查看 840关注 0票数 0

我想把所有的标点符号(点除外)从字符串的开头和结尾去掉,而不是在字符串的中间。

例如,对于原始字符串:

代码语言:javascript
运行
复制
@#%%.Hol$a.A.$%

我希望把单词.Hol$a.A.从结尾和开头删除,而不是从单词的中间删除。

另一个例子可以是字符串:

代码语言:javascript
运行
复制
@#%%...&Hol$a.A....$%

在这种情况下,返回的字符串应该是..&Hol$a.A....,因为我们不关心是否重复允许的字符。

这个想法是删除所有的标点符号(除了点),就在单词的开头和结尾。单词被定义为\w和/或.

一个实际的例子是字符串'Barnes&Nobles'。对于文本分析来说,将Barnes&Nobles识别为单个实体非常重要,但不需要'

如何使用Regex实现目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-02 05:58:21

使用这个简单且易于调整的正则表达式:

代码语言:javascript
运行
复制
[\w.].*[\w.]

它将完全符合你想要的结果,仅此而已。

  • [\w.]匹配任何字母数字字符和点。
  • .*匹配任何字符(通常换行符除外)
  • [\w.]匹配任何字母数字字符和点。

要更改分隔符,只需更改[]括号内的一组允许字符。

查看regex101.com上的正则表达式

代码语言:javascript
运行
复制
import re
data = '@#%%.Hol$a.A.$%'
pattern = r'[\w.].*[\w.]'
print(re.search(pattern, data).group(0))
# Output: .Hol$a.A.
票数 2
EN

Stack Overflow用户

发布于 2016-05-02 05:20:06

根据标点符号条带的含义,您可以修改以下代码:

代码语言:javascript
运行
复制
import re
res = re.search(r"^[^.]*(.[^.]*.([^.]*.)*?)[^.]*$", "@#%%.Hol$a.A.$%")
mystr = res.group(1)

这将剥去表达式中的点之前和之后的所有内容。警告,如果字符串不匹配,则必须检查结果是否与None不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36975349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档