首页 > 解决方案 > 在字符串模式周围寻找字符串

问题描述

正则表达式(可能是)查找被其他单词包围的单词/字符串。

==================================================== ========================== 例如我有下面的句子

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 与依赖项解析一起使用

任何帮助将不胜感激

标签: regexpython-3.xnlpspacy

解决方案


此表达式可能会返回所需的输出,但不确定:

^(?=.*\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的右上角面板上进行了说明,如果您希望探索/简化/修改它,并且在此链接中,您可以查看它如何与一些示例输入匹配,如果您愿意的话。


推荐阅读