regex - 如果单词以给定的后缀结尾,则替换所有出现的字母
问题描述
这个问题没有考虑到特定的正则表达式引擎。
我需要,当单词以特定后缀结尾时,替换单词中所有出现的特定字符,然后另外删除其后缀。为了保持一致性,我将使用类似 vim 的 regex-replace 语法。这是我到目前为止所拥有的:
s/a(\w*)s\b/e\1/g
这会在任何以“s”结尾的单词中找到“a”字符的出现并将其替换为“e”,同时额外删除“s”但在无法匹配和替换多个出现的意义上不重叠同一个词中的一个字符。
解决方案必须匹配并替换一个或多个字符,同时删除后缀。
一些示例行为:
cars -> cer
creators -> creetor
bowling -> bowling
bowling balls -> bowling bell
castration -> castration
castrations -> cestretion
解决方案
我不确定您是否可以仅使用正则表达式来满足您的所有要求。但是,如果您使用(?:(\w*?a\w*))*(?=s\b)
它将匹配所有单词,其中至少有一个a
单词和后缀。但是替换可以在编程语言中完成。所以你可以re.findall(r"\b(\w*?a\w*)(?=s\b)",text)
在 Python 中使用,然后:
[word.replace("a","e") for word in re.findall(r"\b(\w*?a\w*)(?=s\b)",x)]
这会给你:['cer', 'creetor', 'bell', 'cestretion']
推荐阅读
- wpf - 内容左对齐,复选框右对齐
- xml - XSL value-of 返回没有值
- sql-server - 根据另一个表中的数据将行旋转到列
- ocr - tesseract 4.0.0-beta.1 字符周围的边界框
- python-3.x - 如何进行对称加密?我有问题
- docker - tomcat docker挂载卷变空
- java - 片段 - 标记、条件和显示
- react-native - React Native 中如何实现滑动访问不同的导航界面?
- express - 如何从 NestJS 中的 GraphQL 解析器设置会话?
- azure - Azure Databricks 的 Azure DevOps 管道