Skip to main content
 首页 » 编程设计

Python 正则表达式,在目标字符串中搜索前缀

2025年05月04日12haluo1

我需要在目标字符串中找到单词的前缀列表(我想将目标字符串中的匹配索引列表作为数组处理).

  • 我认为使用 regex 应该是最干净的方式。
  • 鉴于我正在寻找模式“foo”,我想在目标字符串中检索像“foo”、“Foo”、“fooing”、“Fooing”这样的词
  • 鉴于我正在寻找模式“foo bar”,我想在目标字符串中检索模式,如“foo bar”、“Foo bar”、“foo Bar”、“foo baring”(它们仍然是都作为前缀处理,对吗?)

目前,在不同场景下运行后,我的 Python 代码仍然无法运行。

  • 我假设我必须使用 ^ 来匹配目标字符串中的单词开头(即前缀)。
  • 我假设我必须使用类似 ^[fF] 的东西来不区分前缀的第一个字母。
  • 我假设我应该使用类似".*" 的东西让正则表达式表现得像一个前缀。
  • 我假设我应该使用 \prefix1|prefix2|prefix3** 在要搜索的模式中放入 **逻辑或许多不同的前缀。

以下源代码不起作用,因为我错误地设置了 txt_pattern。

import re 
 
#              '            '           '            '                     '             '           ' 
txt_str = "edb foooooo jkds Fooooooo kj fooing jdcnj Fooing ujndn ggng sxk foo baring sh foo Bar djw Foo"; 
txt_pattern = ''#??? 
 
out_obj = re.match(txt_pattern,txt_str) 
if out_obj: 
   print "match!" 
else: 
   print "No match!" 
  1. 我错过了什么?

  2. 我应该如何设置txt_pattern?

  3. 你能给我推荐一个好的教程和最少的工作示例吗?目前,Google 搜索第一页的标准教程非常冗长和详细,理解起来并不那么简单。

谢谢!

请您参考如下方法:

正则表达式是错误的方法。首先将您的字符串解析为一个字符串列表,每个项目一个单词。然后使用带有过滤器的列表理解。字符串上的 split 方法是获取单词列表的好方法,然后您可以简单地执行 [item for item in wordlist if item.startswith("foo")]

人们花了很长时间使用复杂的正则表达式破解低效代码,而他们所需要的只是一些字符串方法,如 split、partition、startswith 和一些 pythonic 列表理解或生成器。

正则表达式有其用途,但简单的字符串解析不是其中之一。