首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:替换匹配字符的某些部分

问Regex:替换匹配字符的某些部分
EN

Stack Overflow用户
提问于 2022-03-04 15:26:02
回答 2查看 36关注 0票数 0

我希望能够与某一特定条件相匹配,并保持一定的状态。例如:

June 2021 9 Feature Article Three-Suiters Via Puppets Kai-Ching Lin

应转化为:

Jun 2021 Three-Suiters Via Puppets Kai-Ching Lin

因此,直到单词Article结尾的所有内容都应该匹配;然后,只保留月份的前三个字符,以及年份,这个部分将替换匹配的字符。

我强大的判断力使我了解到:

代码语言:javascript
复制
.+Article(?)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-04 15:40:42

您可以使用正向后查找:

代码语言:javascript
复制
(?<=^[A-Z][a-z]{2})[a-z]*|(?<=\d{4}).*Article
  • (?<=^[A-Z][a-z]{2}) -在我身后是一行和三个字符的开始;大概是一个月的前三个字符。
  • [a-z]* -可选地,捕获这个月的剩余时间
  • | -或
  • (?<=\d{4}) --在我身后是4位数,大概是一年
  • .*Article -捕获所有导致和包括“文章”的内容

https://regex101.com/r/fbYdpH/1

票数 1
EN

Stack Overflow用户

发布于 2022-03-04 15:30:08

您可以使用两个捕获组并在替换中使用这些组:

代码语言:javascript
复制
\b([A-Z][a-z]+)[a-z](\s+\d{4})\b.*?\bArticle\b
  • \b阻止部分单词匹配的单词边界
  • ([A-Z][a-z]+)捕获组1,匹配单个大写字符和1+小写字符
  • [a-z]匹配单个char a-z。
  • (\s+\d{4})\b捕获组2,匹配1+空格字符和4位数字,后面跟着一个单词边界
  • .*?\bArticle\b尽可能至少匹配字符,直到文章

Regex演示

被替换的值将是

代码语言:javascript
复制
Jun 2021 Three-Suiters Via Puppets Kai-Ching Lin
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71353562

复制
相关文章

相似问题

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