regex - 使用 REGEX 忽略特定单词后需要文本
问题描述
我想在忽略某些关键词后提取单词。
我想忽略M/S提供 或提供的内容,直到行尾。
输入文本
汇款通知
本节包括由 M/S MOBIS INDIA LIMITED 提供的详细信息
本节包括由 MANDO AUTOMOTIVE INDIA LIMITED 提供的详细信息
本节包括由 MAHINDRA AND MAHINDRA AUTO SECTOR 提供的详细信息
预期产出
摩比斯印度有限公司
万都汽车印度有限公司
马欣德拉和马欣德拉汽车行业
我给了这样的东西
(?<=(由 M/S 提供。)|(由 M/S 提供。)).*
在这里感谢帮助。
解决方案
如果您只想要匹配,您可以使用环视,并可选择在后视中匹配M/S
并断言在开始匹配时不会M/S
(?<=supplied by\s+(?:M/S\s+)?)\S(?<!\s+M(?=/S\s)).+
模式匹配:
(?<=
积极的回顾supplied by\s+
匹配字面上后跟 1+ 个空格字符(?:M/S\s+)?
可选匹配M/S
和 1+ 个空格字符
)
近距离观察\S
匹配非空白字符(?<!
负面回顾\s+M(?=/S\s)
匹配 1+ 个空白字符,M
并断言S
后跟一个空白字符
)
近距离观察.+
匹配任何字符 1 次以上
另一种编写方式可能是匹配 1+ 个非空白字符,然后在右侧断言空白边界,然后直接在左侧断言不是M/S
(?<=supplied by\s+(?:M/S\s+)?)\S+(?!\S)(?<!M/S).+
查看另一个.NET 正则表达式演示
另一种选择是使用捕获组:
\bsupplied by(?:\s+M\/S)?\s+(.+)
推荐阅读
- android - 仅在验证电子邮件后才可以登录(使用 Firebase)
- amazon-web-services - 用于创建启动模板的 Lambda 函数
- documentation - 使用 docusaurus 拆分视图
- c# - 需要将我的 MVC4 Web 应用程序与 Microsoft Graph SDK 集成?
- sql - SQL Server 中带有 IN 和输入变量的 SELECT 语句
- node.js - 如何将填充的 ObjectId 与字符串混合
- python - 如何获得具有连续日期时间行的扩展数据框?
- r - How to calculate a ratio for each month in a year and attach 12 ratio columns (will be 12 columns) to the origianl dataset in R?
- python-3.x - 在 Matplotlib 的 X 轴上间隔日期
- node.js - 猫鼬只更新选定的字段