gpt4 book ai didi

C 如何指定以空行开始并以空行结束的 POSIX 正则表达式?

转载 作者:行者123 更新时间:2023-11-30 15:46:51 25 4
gpt4 key购买 nike

我正在尝试编写代码来扫描文件并生成“匹配!”当该工具读取前后有空行的特定代码行时出现消息。我感兴趣的匹配行是:

Appliance Version 3.1.2

使用 regex.h,我有一个简单的工具,可以编译我的正则表达式模式,然后针对文件中的每一行执行它以搜索匹配项。该工具的基本功能很好:我能够让它成功搜索各种正则表达式匹配。当我尝试匹配在上述文本行之前和之后包含空行的正则表达式时,就会出现问题。这是我预编译的正则表达式:

[[:space:]]+\n^Appliance Version [[:alnum:]]$\n

我尝试了一系列与此类似的不同组合,但似乎没有任何效果。我认为这可能与\n 有关,在这种情况下,我需要找出一种新方法来指定两个空行。任何有关 POSIX 正则表达式的见解将不胜感激!

最佳答案

看看你的正则表达式,看起来它正在尝试匹配

Appliance Version [[:alnum:]]

在行尾( $ )。这将匹配

Appliance Version 3

( 3[:alnum:] 的实例),但不是由

Appliance version 33

( [[:alnum:]] 只匹配一个字符),更不用说

Appliance version 3.1.2

(上述问题,并且 . 不是 [:alnum:] 的实例)

所以至少你需要改变[[:alnum:]][.[:alnum:]]* (或类似的)。

此外,您对 ^ 的使用和$与显式 \n 是多余的,但正则表达式中没有任何内容要求匹配项前面或后面有一个空行。例如,[[:space:]]\n很乐意与以下行匹配:

不是空行,但末尾有一个空格:\n

(我已明确写入 \n 以显示行尾的空白字符。)

匹配空行

单个空行与 ^[[:space:]]*$ 匹配。这与两端的换行符不匹配。如果您想在某些内容之前匹配空行,请使用:^[[:space:]]*\nSOMETHING 。要匹配某个内容之后的空行: SOMETHING\n[[:space:]]*$ 。或者,如果您确实想要前后有一个空行:^[[:space:]]*\nSOMETHING\n[[:space:]]*$ 。 (但是,例如,如果某些内容恰好是输入的第一行或最后一行,则不会匹配。)

关于C 如何指定以空行开始并以空行结束的 POSIX 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17955895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com