【问题标题】:Search text for a pattern with interruptions to the pattern在文本中搜索模式中断的模式
【发布时间】:2019-10-03 15:27:33
【问题描述】:

我需要一种灵活的方式来搜索字符串中的模式。

假设我们的模式是“GEEGG”。

我想确定一个字符串具有这种模式,允许“中断”和“侧翼”符号。

• 'GEEGG' 的中断符号 = 'GEGEGG' 或 'GEEGEG' • 'GEEGG' 的侧翼符号 = 'GGEEGG' 或 'GEEGGE'

我无法用一种简单/优雅的方式来解决这个问题。

以下所有queries 都应与pattern 匹配

pattern = 'GEEGG'
query_flank = '--GEEGG--'
query_flank2 = '--GE--GEEGG--'
query_interrupt = '--G-E-E-G-G-'
query_interrupt2 = '--G-E-G-E-E-G-G'

【问题讨论】:

  • 您的标准是允许模式中两个相邻字符之间只允许一个字符吗?或者您对什么构成“灵活”匹配有更复杂的概念。

标签: python parsing search text


【解决方案1】:

Python REGEX 库可以尝试使用 '* asterisk' 或 '.* period asterisk' 来匹配两者之间的任何内容:


import re
txt = "<to search>"
x = re.search("*G*E*E*G*G*", txt)

***(在rici评论后更新答案)

import re

pattern = 'GEEGG'
query_flank = '--GEEGG--'
query_flank2 = '--GE--GEEGG--'
query_interrupt = '--G-E-E-G-G-'
query_interrupt2 = '--G-E-G-E-E-G-G'


txt = "--GEEGG--"
x = re.search("G*E*E*G*G", txt)
print("print x")
print(x)

import re


pattern = 'GEEGG'
query_flank = '--GEEGG--'
query_flank2 = '--GE--GEEGG--'
query_interrupt = '--G-E-E-G-G-'
query_interrupt2 = '--G-E-G-E-E-G-G'


txt = "--GEEGG--"
y = re.search("G.*E.*E.*G.*G*", txt)
print("print y")
print(y)

OUTPUT:
print x
<re.Match object; span=(2, 7), match='GEEGG'>
print y
<re.Match object; span=(2, 9), match='GEEGG--'>

【讨论】:

  • G* 匹配任意数量的G。我想你的意思是G.*,它匹配一个 G 后跟任意数量的任何东西。
  • 谢谢!这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2021-12-20
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多