提取内联 IF 项目
Extract Inline-IF items
如果是用 javascript 代码编写的(多行)内联,我该如何提取部分内容,如下所示:
( MYDATA.FIELD > 1.03 ? 'higher than' : ( 0.97 > MYDATA.FIELD ? 'lower than' : 'equal to' ))+
groups:
"MYDATA.FIELD > 1.03" ,
"'higher than'" ,
"0.97 > MYDATA.FIELD" ,
"'lower than'" ,
"'equal to'"
对于一行中的两个 inline-if,我有这个正则表达式:
\((.*?)\s?\?(.*?)\:\s*(\((.*?)\s?\?(.*?)\:(.*?)\))\s?\)
或
( Condition1 == true || condition2 == 0.2 ) ?
{"type":"text","value":"..."},
{"type":"text","value":"..."},
{"type":"text","value":"..."},
:
{"type":"text","value":"..."},
{"type":"text","value":"..."},
) + ...
groups:
"Condition1 == true || condition2 == 0.2" ,
"{"type":"text","value":"..."},
{"type":"text","value":"..."},
{"type":"text","value":"..."}," ,
"{"type":"text","value":"..."},
{"type":"text","value":"..."}," ,
我要编辑我的 javascript 代码并创建 json 对象,所以 不需要 替换 javascript 中的函数!
最大深度:2
我关于解析或提取 inline-if 或 Conditional (ternary) Operator 项的问题是通过这个正则表达式和故事完成的!
首先,我在 pcre(PHP) 正则表达式测试器中完成了,因为 IF-Clause 在正则表达式或条件捕获组或任何你命名的东西中的用法,但被称为 (?(-1)true|false)
感谢 Regex101 及其简要定义:
(?(1)yes|no)
If capturing group 1 was matched so far, matches the pattern before the vertical bar. Otherwise, matches the pattern after the vertical bar. A group name, or a relative position (-1) in PCRE, can be used. Global flag breaks conditionals.
通过这个Regex 3部分内联如果提取:(输入和空格是为了更好的可读性)
\(\s*
(.+?)\s*\?\s*
(\(\s*)? (?(-1)(.+?)\s*\)|(.+?))
\s*\:\s*
(\(\s*)? (?(-1)(.+?)\s*\)|(.+?))
\s*\)
Demo for Above Code and Improvements in next update :
对于多行接受,我将 .
更改为 [^\X]
因为 pcre 不接受 [^]
的用法。 ..
捕获嵌套 inline-if
中不同的组,但没关系!
现在回家了!但是,正则表达式中的 JavaScript IF 子句是什么?
将 (\(\s*)? (?(-1)(.+?)\s*\)|(.+?))
转换为 JavaScript 正则表达式模式是通过两种使用负面和正面外观来完成的:(感谢 existing Answer and others)
((?=conditional-pattern)yes-pattern|(?!conditional-pattern)no-pattern)
( (?=\(\s*) .+?\) | (?!\(\s*) .+? )
Condition^^^^^^^ ^^^true ^^^false
用于提取 inline-if
的最终正则表达式是:(输入和空格是为了更好的可读性)
\(\s*
([^]+?)\s*\?\s*
((?=\(\s*)[^]+?\)|(?!\(\s*)[^]+?)
\s+\:\s+
((?=\(\s*)[^]+?\)|(?!\(\s*)[^]+?)
\s*\)
- 感谢
{"type":"text","value":"..."},
没有 :
和 \s+\:\s+
的使用解决了我通过 json 对象定义和查找 false
部分的多行搜索。
如果是用 javascript 代码编写的(多行)内联,我该如何提取部分内容,如下所示:
( MYDATA.FIELD > 1.03 ? 'higher than' : ( 0.97 > MYDATA.FIELD ? 'lower than' : 'equal to' ))+
groups:
"MYDATA.FIELD > 1.03" ,
"'higher than'" ,
"0.97 > MYDATA.FIELD" ,
"'lower than'" ,
"'equal to'"
对于一行中的两个 inline-if,我有这个正则表达式:
\((.*?)\s?\?(.*?)\:\s*(\((.*?)\s?\?(.*?)\:(.*?)\))\s?\)
或
( Condition1 == true || condition2 == 0.2 ) ?
{"type":"text","value":"..."},
{"type":"text","value":"..."},
{"type":"text","value":"..."},
:
{"type":"text","value":"..."},
{"type":"text","value":"..."},
) + ...
groups:
"Condition1 == true || condition2 == 0.2" ,
"{"type":"text","value":"..."},
{"type":"text","value":"..."},
{"type":"text","value":"..."}," ,
"{"type":"text","value":"..."},
{"type":"text","value":"..."}," ,
我要编辑我的 javascript 代码并创建 json 对象,所以 不需要 替换 javascript 中的函数!
最大深度:2
我关于解析或提取 inline-if 或 Conditional (ternary) Operator 项的问题是通过这个正则表达式和故事完成的!
首先,我在 pcre(PHP) 正则表达式测试器中完成了,因为 IF-Clause 在正则表达式或条件捕获组或任何你命名的东西中的用法,但被称为 (?(-1)true|false)
感谢 Regex101 及其简要定义:
(?(1)yes|no)
If capturing group 1 was matched so far, matches the pattern before the vertical bar. Otherwise, matches the pattern after the vertical bar. A group name, or a relative position (-1) in PCRE, can be used. Global flag breaks conditionals.
通过这个Regex 3部分内联如果提取:(输入和空格是为了更好的可读性)
\(\s*
(.+?)\s*\?\s*
(\(\s*)? (?(-1)(.+?)\s*\)|(.+?))
\s*\:\s*
(\(\s*)? (?(-1)(.+?)\s*\)|(.+?))
\s*\)
Demo for Above Code and Improvements in next update :
对于多行接受,我将
.
更改为[^\X]
因为 pcre 不接受[^]
的用法。 ..捕获嵌套
inline-if
中不同的组,但没关系!
现在回家了!但是,正则表达式中的 JavaScript IF 子句是什么?
将 (\(\s*)? (?(-1)(.+?)\s*\)|(.+?))
转换为 JavaScript 正则表达式模式是通过两种使用负面和正面外观来完成的:(感谢 existing Answer and others)
((?=conditional-pattern)yes-pattern|(?!conditional-pattern)no-pattern)
( (?=\(\s*) .+?\) | (?!\(\s*) .+? )
Condition^^^^^^^ ^^^true ^^^false
用于提取 inline-if
的最终正则表达式是:(输入和空格是为了更好的可读性)
\(\s*
([^]+?)\s*\?\s*
((?=\(\s*)[^]+?\)|(?!\(\s*)[^]+?)
\s+\:\s+
((?=\(\s*)[^]+?\)|(?!\(\s*)[^]+?)
\s*\)
- 感谢
{"type":"text","value":"..."},
没有:
和\s+\:\s+
的使用解决了我通过 json 对象定义和查找false
部分的多行搜索。