【问题标题】:Python 3 Regex - Extracting an unknown substring from a sentence with unknown spacing between stringsPython 3 Regex - 从字符串之间间距未知的句子中提取未知子字符串
【发布时间】:2020-05-14 12:34:44
【问题描述】:

我试图在一个句子中的两个子串之间提取一个未知的子串,它有一个标准的设计。

例子:

object Ball is located in row 8
objectballisLocatedINROw8
objectChairislocated in row 4
    object CupboardisLocated in row 22

在上面的句子中,语句遵循如下特定模式:

object<optional spacing>item-name<optional spacing>is<optional spacing>located<optional spacing>in<optional spacing>row<optional spacing>some integer

此外,子字符串可能有奇怪的情况,如完全大写、完全小写或以不可预测的方式混合大小写(请参阅上面的例句以了解我的意思)。

我的目标:

提取item-name,其中item-name 可以是任何未知大小写的未知字符串(大写、小写、两者的混合)

我尝试了什么?

import re

task = "objectChairislocatedinrow8"
object = re.search(r'(\s)*object(\s)*[a-z]*(\s)*is(\s)*located(\s)*in(\s)*row(\s)*\d+(\s)*', 
task, re.IGNORECASE)

print(object)

【问题讨论】:

  • 你的正则表达式很好,你只需要删除空格周围的捕获组并在字符串的item-name部分周围添加一个:regex101.com/r/PAIzzJ/1

标签: regex string substring character python-3.7


【解决方案1】:

正则表达式'^ *object *([A-Za-z]+) *is.*'

它匹配包含大写和小写单词的单词。如果单词中间有“is”,也可以使用,例如 thisparis [A-Za-z]+ 周围的括号选择该组,以便它以后可以用。

import re

task = "objectChairislocatedinrow8"
object = re.search(r'^ *object *([A-Za-z]+) *is.*', 
task, re.IGNORECASE)

print(object.group(1))

输出:

Chair

【讨论】:

    猜你喜欢
    • 2012-02-28
    • 2013-07-25
    • 2014-07-26
    • 2023-01-07
    • 2015-06-24
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多