检查字符串是否包含多个关键字的高级进阶
152浏览 · 2023-08-12 16:09:10
要检查一个[字符串](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)是否包含多个关键字,可以使用[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)。以下是一个可以检查字符串是否包含多个关键字的[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)的示例代码:
```python
import re
def contains_keywords(text, keywords):
pattern = re.compile('|'.join(keywords))
return pattern.search(text) is not None
text = 'This is a sample text containing the keywords python and regex'
keywords = ['python', 'regex']
if contains_keywords(text, keywords):
print('The text contains all the keywords')
else:
print('The text does not contain all the keywords')
在上面的代码中,我们使用了 `re.compile()` 方法将多个关键字组合成一个[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083),并使用了 `search()` 方法来查找字符串中是否包含这些关键字。如果字符串中包含所有的关键字,则返回 True,否则返回 False。
需要注意的是,此方法只会检查关键字是否在字符串中出现,而不会检查它们的顺序。如果需要检查关键字的顺序,可以使用更复杂的[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)或其他算法。
相关问题
你可以使用正则表达式来匹配多个关键字,并使用 HTML 标签来实现高亮显示。以下是一个示例代码:
```java
public static String highlightKeywords(String text, String[] keywords) {
String patternString = String.join("|", keywords);
Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(text);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "<span style=\"background-color: yellow\">" + matcher.group(0) + "</span>");
matcher.appendTail(sb);
return sb.toString();
```