我正在尝试匹配数学方程式中的任何内容,但忽略了Latex命令。到目前为止,我已经提出了以下表达式:
(?<!\\)\b([a-zA-Z0-9.,]+)
我拥有的字符串:
200\% Depreciation\ (Year_2) = $610,500\times\frac{blah}{12}\times0.2
但是我的表达式在结尾处与0.2
不匹配,在2
中也与Year_2
不匹配。我还有其他类似问题的复杂方程式。
我认为问题是边界\b
一词,但我没有其他更好的选择。不幸的是,我发现我不能在负向后的内部使用量词。所以我做不到
(?<!\\[a-z]+)([a-zA-Z0-9.,]+)
基本上我想匹配以下所有内容:
$
,%
,,
,.
),而忽略格式为\foo
的Latex命令以及特殊字符,例如^
,_
,=
,+
,-
和括号。
一个完美的表达将匹配:
200\% Depreciation\
(Year
_ 2
)= $610,500
\ times \ frac {blah
} {12
} \ times {{1 }}
非常感谢!
答案 0 :(得分:1)
您可以使用以下正则表达式:
(?<!\\)(?<![a-zA-Z])[a-zA-Z]+\\?|\$?[0-9]{1,3}(\,?[0-9]{1,3})*(\.[0-9]+)?(\\[%])?
更长一些,因为它会检查数字的格式是否正确。
答案 1 :(得分:1)
您可以使用此:
\\[a-z]+(*SKIP)(*F)|[a-zA-Z0-9.,$% ]+
说明:
\\[a-z]+ # a backslash followed by 1 or more alpha
(*SKIP)(*F) # skip & forget previous match
| # OR
[a-zA-Z0-9.,$% ]+ # 1 or more any of these characters.