首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的正则表达式匹配词(有可能吗?)

复杂的正则表达式匹配词(有可能吗?)
EN

Stack Overflow用户
提问于 2012-12-15 08:45:44
回答 1查看 149关注 0票数 0

我想要一个正则表达式来匹配所有希腊语(utf-8)中不匹配的单词:

  • .结束
  • -结束
  • '结束
  • 以数字结尾(1-9)
  • .开始
  • ,开始
  • -开始
  • 第一个字母是大写字母
  • 所有字母都是大写字母

这个是可能的吗?为了匹配希腊语单词,我使用\p{Greek}{3,},它与至少有3个字符的希腊语UTF-8匹配。

我用ruby编写程序,但如果可以用perl或任何其他cli工具/语言完成,我将编写一个脚本,将输出转储到文本文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-15 09:16:27

代码语言:javascript
复制
(?<!\S)(?=\S*\p{Greek})(?![-,.\p{Lu}])(?![\p{Lu}\P{L}]+\b)\S+(?<![-.'1-9])(?!\S)

让我们打破这个美味的:

  • 正则表达式的核心是中间的\S+,它被一堆积极和消极的断言所包围。
  • (?<!\S) -这个词之前不能有一个非空格字符.这确保了我们的比赛不会在一个字中间开始。
  • (?=\S*\p{Greek}) -一定有至少一个希腊字母在那里的某处。
  • (?![-,.\p{Lu}]) -这个词不能以破折号、逗号、点或大写字母\p{Lu}开头。
  • (?![\p{Lu}\P{L}]+\b) -这个词不能都是大写字母和符号。
  • (?<![-.'1-9]) -这个词不能以破折号、点、撇号或数字1到9结尾。
  • (?!\S) -这个词不能后面跟着一个非空格字符.这确保了我们的比赛不会在一个字中间结束。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13890731

复制
相关文章

相似问题

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