我需要在目标字符串中找到单词的前缀列表(我想将目标字符串中的匹配索引列表作为数组处理).
- 我认为使用 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!"
我错过了什么?
我应该如何设置
txt_pattern?你能给我推荐一个好的教程和最少的工作示例吗?目前,Google 搜索第一页的标准教程非常冗长和详细,理解起来并不那么简单。
谢谢!
请您参考如下方法:
正则表达式是错误的方法。首先将您的字符串解析为一个字符串列表,每个项目一个单词。然后使用带有过滤器的列表理解。字符串上的 split 方法是获取单词列表的好方法,然后您可以简单地执行 [item for item in wordlist if item.startswith("foo")]
人们花了很长时间使用复杂的正则表达式破解低效代码,而他们所需要的只是一些字符串方法,如 split、partition、startswith 和一些 pythonic 列表理解或生成器。
正则表达式有其用途,但简单的字符串解析不是其中之一。
