这里是正则表达式-((?:\-\s*)?(?:\d*){1})(?=x1?(?!\d))
。我对 \ d *
我需要解决查找数学方程式(例如x2,x)的任务
例如,我有文字: 9278x2-3040x + 0x1-x2 + 3x + x
(找到x系数)的结果应该是:“-3040”,“ 0”,“ 3”,“”。
“” 在这里表示x,因为x没有系数,但是它意味着有1x
但是,请使用\d*
而不是\d+
(因为正则表达式不会找到x的“”),所以我还会得到多余的匹配项“”
答案 0 :(得分:0)
如果匹配项前面紧跟数字,则需要限制该匹配项:
((?:-\s*)?(?<!\d)\d*)(?=x1?(?!\d))
^^^^^^^
请参见regex demo
详细信息
((?:-\s*)?(?<!\d)\d*)
-第1组(虽然看起来很多余,但是您可以删除外部括号,除非您需要执行一些特殊的操作):
(?:-\s*)?
--
和0+个空格字符的可选序列(?<!\d)
-当前位置的左边不允许有数字\d*
-0位数以上(?=x1?(?!\d))
-积极的前瞻性,确保后面有一个x
和一个可选的1
,并且后面没有数字。请注意,您可能需要使用1?+
来确保一次否定超前被执行,并且只有在1
匹配的情况下才被执行。