regex - 在字符串模式周围寻找字符串
问题描述
正则表达式(可能是)查找被其他单词包围的单词/字符串。
==================================================== ========================== 例如我有下面的句子
1.我正在设置一个新服务器,关键是 ABC,并希望在我的 Web 应用程序中完全支持 UTF-8。我需要在哪里设置编码/字符集?”</p>
2.XYZ 是我正在设置的新服务器的密钥,它位于地址 111 abc
3.截至日期的密钥是 WWW 用于我设置在 111, ABC London 的新服务器
4.服务器的密钥是LMN,它被设置在位置111,abc London。
key 是有限的,只有大约 10 个值。键本身的值可以是任何形式。我用过 ACB、XYZ、WWW、LMN 作为上面的例子
我应该能够识别出句子中存在 Key 并从上述所有示例中提取值(ACB、XYZ、WWW、LMN)。
我基本上已经尝试过使用 if then else 这非常麻烦并且还没有很好的代码可以显示。但会在我能更新的时候更新
我基本上已经尝试过使用 if then else 这非常麻烦并且还没有很好的代码可以显示。但会在我能更新的时候更新
我应该能够识别出句子中存在 Key 并从上述所有示例中提取值(ACB、XYZ、WWW、LMN)。
另一种选择可能是将 Spacy 与依赖项解析一起使用
任何帮助将不胜感激
解决方案
此表达式可能会返回所需的输出,但不确定:
^(?=.*\b(ABC|XYZ|WWW|LMN)\b).*$
演示
测试
import re
regex = r"^(?=.*\b(ABC|XYZ|WWW|LMN)\b).*$"
test_str = """
1.I’m setting up a new server, The key is ABC and want to support UTF-8 fully in my web application. Where do I need to set the encoding/charsets?”
2.XYZ is the key for the new server I am setting and it is located at address 111 abc
3.Key as of the date is WWW for the new server I am setting at 111, ABC London
4.The key for server is LMN and it is being setup at location 111, abc London.
"""
print(re.findall(regex, test_str,re.M))
输出
['ABC', 'XYZ', 'ABC', 'LMN']
该表达式在regex101.com的右上角面板上进行了说明,如果您希望探索/简化/修改它,并且在此链接中,您可以查看它如何与一些示例输入匹配,如果您愿意的话。
推荐阅读
- postcss - 如何使用 postcss 在顺风中压缩文件大小?
- firebase - Firestore 增量、arrayUnion 和 arrayRemove 函数是否需要事务?
- python - 如何根据另一列中的值用另一列的平均值替换 NaN 值?熊猫
- flutter - I/flutter (8686): 另一个异常被抛出: NoSuchMethodError: The method 'save' was called on null
- tensorflow - 加载 SSD Inception v2 模型时 ML.NET 输入形状不匹配
- sql - 从 SQL 响应中读取 uniqueidentifier 时出现问题
- arrays - Mongodb通过键值更新嵌套数组
- python - 如何在熊猫中对数据类别进行汇总?
- python-3.x - ValueError:尺寸必须相等(keras)
- javascript - 执行 npm install angular-firebase --save 时出错