首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想用正则表达式取中文句子的中间模式

我想用正则表达式取中文句子的中间模式
EN

Stack Overflow用户
提问于 2019-06-12 13:55:49
回答 1查看 23关注 0票数 2

我试着根据我的模式选择中间的单词。下面是我的代码:

代码语言:javascript
运行
复制
text = "東京都田中区9-7−4"
import re
#Sorry due to the edit problem and stackoverflow doesnt allow me to include long sentences here, please check my comment below for the compile function of re.


city = re.findall(r,text)
print("getCity: {}".format(city))

我当前的输出:

代码语言:javascript
运行
复制
getCity: ['都田中区']

我的预期输出:

代码语言:javascript
运行
复制
getCity: ['田中区']

我不想使用都道府県,所以我使用"?!“在我的第一个开始模式中(?!...??都道府県)。但是,当我运行我的程序时,它显示"都“也在里面,就像我在当前输出中显示的一样。有人能在这方面给我指点一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-12 14:17:13

您的正则表达式的问题是它太允许了。

如果你看一下这里的可视化(我删除了所有硬编码的城市(市)名称,因为它们是不相关的):

你可以看到很多"any character“重复x次,或者只是"not市”和"not町“重复了x次。这些是与字符串中的都道府県相匹配的内容。因此,以下是您应该禁止都道府県的地方:

相应的正则表达式为:

代码语言:javascript
运行
复制
(?:余市|高市|[^都道府県市]{2,3}?)郡(?:玉村|大町|[^都道府県]{1,5}?)[町村]|(?:[^都道府県]{1,4}市)?[^都道府県町]{1,4}?区|[^都道府県]{1,7}?[市町村]

记住在你的代码中添加硬编码的城市!

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

https://stackoverflow.com/questions/56555489

复制
相关文章

相似问题

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