regex 正则表达式只匹配句子的第一个词和最后一个词

xt0899hw  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(150)

我正在试着匹配一个以“你好”开头、以“再见”结尾的句子。例如,“hello something bye”应该导致匹配。
我试着使用正则表达式^hello|[a-z]|bye$,但它能检测到一切。我也试过谷歌搜索,但我找不到解决这个确切的情况。

6bc51xsx

6bc51xsx1#

^hello\b.*\bbye$

说明:

  • ^匹配字符串(句子)的开头
  • hello匹配文字“hello”
  • .* 匹配任何字符(除了换行符)零次或多次
  • \B匹配单词边界(以确保“bye”是一个完整的单词,而不仅仅是一个子字符串)
  • bye和字面上的“bye”匹配
  • $匹配字符串(句子)的结尾
h22fl7wq

h22fl7wq2#

根据您的注解,您似乎希望匹配指定模式的所有示例。为了实现这一点,你可以使用这样的东西:

import re

text = "irrelevant sentence hello first sentence bye irrelevant sentence hello second sentence bye " \
       "irrelevant sentence hello third sentence bye irrelevant sentence"

regex = r"(?:^|\s)(hello\s.*?bye)(?=\s|$)"

matches = re.findall(regex, text)

if matches:
    print("Matches found:", matches)
else:
    print("Matches not found.")

输出:

Matches found: ['hello first sentence bye', 'hello second sentence bye', 'hello third sentence bye']
qlzsbp2j

qlzsbp2j3#

一般来说,可以使用正则表达式模式^\w+|\w+$,它只匹配开头或结尾的单词。假设你的实际语言是Python,我们可以尝试:

inp = "hello something bye"
matches = re.findall(r'^\w+|\w+$', inp)
print(matches)  # ['hello', 'bye']

相关问题