Regex 正则表达式:数学表达式中带参数的捕获函数
我观察的与之匹配的字符串如下:Regex 正则表达式:数学表达式中带参数的捕获函数,regex,Regex,我观察的与之匹配的字符串如下: 5+\uuufxn1.'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 我试过使用regex express[A-Z0-9\]+\(.*?\)哪个匹配 \uuufxn1\uuuuuuuuu(“你好”,1,3,”\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
5+\uuufxn1.'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我试过使用regex express[A-Z0-9\]+\(.*?\)
哪个匹配
\uuufxn1\uuuuuuuuu(“你好”,1,3,”\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我期待的是:
\uuufxn1\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如何实现它。请帮助。如果括号总是平衡的,您可以使用基于递归的正则表达式
\[A-Z0-9\]+\(((?:[^()]+++\;(?-1))*\)
如果字符串中的(
或)
数量不平衡,则可能会失败,请参阅。简言之:
\[A-Z0-9\]+\\
-\
,一个或多个大写字母、数字或\
,然后\
(\((((?:[^()])+++(?-1))*\)
-第1组:(
),然后递归除(
和)
或整个第1组模式以外的一个或多个字符的任何零次或多次出现,然后递归一个)
(因此匹配带有任意数量成对嵌套括号的(…)
子字符串)
如果需要支持不平衡括号,则使用只匹配所有允许数据格式的正则表达式更安全,例如
。[A-Z0-9\]+\(\s*(?:'[^']*'.\d+)(:\s*,\s*(?:'[^']*'.\d+))*\s*\)
请参阅。或者,如果可以使用\
字符串中的\
字符对'.'
进行转义,则可以使用
\\[A-Z0-9\]+\\(\s*(?:'[^'\]*(?:\.[^'\]*)*“\\\d+(:\s*,\s*(?:'[^'\]*(?:\.\.^'\]*)*“\\\\\d+)*\s*)
看
详情:
\[A-Z0-9\]+\
-\
,一个或多个高位或数字,然后\
\(
-(
char
\s*
-零个或多个空格
(?:“[^']*”|\d+
-”
,零个或多个非”
,然后是一个”
或一个或多个数字
(?:\s*,\s*(?:'[^']*'.\d+))
-零次或多次出现,
包含可选空格,然后出现“…”
子字符串或一个或多个数字
\s*\)
-零个或多个空格,然后是一个)
注意:如果您需要支持任何类型的数字,您需要将\d+
替换为更复杂的模式,如[+-]?\d+(?:\.\d+)
或。谢谢您的快速回答。我正在尝试了解您所指的内容。同时,我还需要5+\ufxn1\uu('hello',1,3,\uuuuuuuuuuuuuu hello\uuuuuuo(hello)+)+5+(2)+uuuuuuufxn2)__(“好孩子”)
这需要匹配。@wrufesh您可以继续增强模式,可以有更多的示例,现在您知道如何添加它们的支持。@wrufesh注意,如果您绝对确定输入中没有不平衡的括号,您仍然可以使用基于递归的正则表达式。但是,此时您应该停止考虑单个regex解析这些输入,但编写一个专用格式解析器。这真的很难。最后一个是我想要的。我确信没有不平衡的括号,或者你可以说我不需要处理这些。非常感谢你的帮助。谢谢。:)@wrufesh我重新给出了答案。对于正则表达式来说,捕获成对的括号、允许嵌入括号以及处理不平衡的括号是一个非常棘手的要求。你最好使用解析器。