让两个角色之间的一切都跨越新的界限

这是我的一篇范文。

6)杰克出租车服务公司是出租车行业的新进入者。它通过在行业中占有独特的地位而获得了成功。Jake’s Taxi Service大多可能是如何实现这一地位的?

A)提供的长途出租车票价比竞争对手高;服务区域比竞争对手大。

B)以低于竞争者的价格提供长途出租车票价;服务范围小于竞争者

C)以高于竞争对手的价格提供长途出租车票价;与竞争对手在同一地区提供服务。

D)以低于竞争对手的价格提供长途出租车票价;与竞争对手在同一地区提供服务。

答案:D D

我试图匹配整个问题包括答案选项。从题号到答案的所有内容

这是我现在的regex表达式

((rf'(?<={searchCounter}\) ).*?(?=Answer).*'), re.DOTALL)

SearchCounter只是一个变量,它将对应当前的问题,在本例中是6。我认为问题是与跨新行搜索有关。

EDIT:完整的源代码

searchCounter = 1

bookDict = {}

with open ('StratMasterKey.txt', 'rt') as myfile:

    for line in myfile:
        question_pattern = re.compile((rf'(?<={searchCounter}\) ).*?(?=Answer).*'), re.DOTALL) 

        result = question_pattern.search(line)
        if result != None: 
            bookDict[searchCounter] = result[0] 
            searchCounter +=1

解决方案:

你的 regex 失败的原因是你读取的文件为 逐条for line in myfile:,而您的模式则在 单行线.

替换 for line in myfile:contents = myfile.read() 再用 result = question_pattern.search(contents) 以获得第一场比赛,或 result = question_pattern.findall(contents) 来获得多个匹配。

关于regex的说明:我并没有修正整个模式,因为正如你所提到的,它不在这个问题的范围内,但是由于现在输入的字符串是一个多行字符串,你需要去掉 re.DOTALL 并使用 [\s\S] 来匹配模式中的任何字符,并且 . 以匹配除换行符以外的任何字符。另外,lookaround结构是多余的,你可以安全地替换为 (?=Answer)Answer. 另外,如果要检查是否有匹配,你可以简单地使用 if result: 然后通过访问 result.group().

完整的代码片段。

with open ('StratMasterKey.txt', 'rt') as myfile:
    contents = myfile.read()
    question_pattern = re.compile((rf'(?<={searchCounter}\) )[\s\S]*?Answer.*')) 
    result = question_pattern.search(contents)
    if result: 
        print( result.group() )

给TA打赏
共{{data.count}}人
人已打赏
未分类

在简单的HibernateSpring启动示例中,从JpaRepository中检索对象后,懒惰加载不起作用。

2022-9-8 2:56:37

未分类

FreeSWITCH: 錯誤的試用次數與originate_retries。

2022-9-8 2:56:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索