gpt4 book ai didi

regex - 如何在 CMake 中获取正则表达式的组匹配?

转载 作者:行者123 更新时间:2023-12-04 15:34:11 24 4
gpt4 key购买 nike

让我们看一下下面的说明性示例。

set(TEXT "ab,cc,df,gg")
string(REGEX MATCHALL "((.)\\2)" RESULT "${TEXT}")
message("Result: ${RESULT}")

# Expected: Result: cc;gg
# Actual: Result:

比较 regex101 上的预期结果.

有谁知道如何在上面的例子中正确检索匹配组 1?使用 CMake 可以实现吗?

我在网络上找不到 CMake 使用的正则表达式处理器的局限性。谁知道更多? (在 CMake FAQ 中写了一些关于此的内容)

感谢您的支持!

最佳答案

CMake 的正则表达式比较有限。看static char* regatom (int *flagp) RegularExpression.cxx 中的方法.一个 \\表示下一个字符被转义(按字面处理)。看起来 CMake 正则表达式中没有可能的反向引用。

作为一种变通方法,您可以使用 execute_process 调用 shell 命令。 .

set(TEXT "ab,cc,df,gg")
message("TEXT: ${TEXT}")

execute_process(
COMMAND echo ${TEXT}
COMMAND sed "s/.*\\(\\(.\\)\\2\\).*/\\1/g"
OUTPUT_VARIABLE RESULT OUTPUT_STRIP_TRAILING_WHITESPACE
)

message("RESULT: ${RESULT}")

这产生:
TEXT: ab,cc,df,gg
RESULT: gg

你将不得不调整你的正则表达式来产生 cc;gg从给定的字符串。

关于regex - 如何在 CMake 中获取正则表达式的组匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274925/

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