我需要从一个函数字符串中提取的变数名称。
变量可以是[a-zA-Z0-9] +,但不是表示为1、3.5、1e4、1e5 ...的实数。
有一个聪明的方法吗?
下面是一个M(不)在Python:
import re
pattern = r"[a-zA-z0-9.]+"
function_string = "(A+B1)**2.5"
re.findall(pattern, function_string)
上面的代码返回:
A, B1 and 2.5.
我想要的输出是
A and B1.
这是测试正则表达式的一种好方法: https://regex101.com/r/fv0DfR/1
答案 0 :(得分:1)
std::shared_ptr
输出:
import re
pattern = r'[a-zA-Z_][a-zA-Z0-9_]{0,31}'
function_string = "(A+B1)2.5"
print(re.findall(pattern, function_string))
答案 1 :(得分:0)
尝试此正则表达式:
\b(?!\d)[a-zA-Z0-9]+
说明:
\b
-匹配单词边界(?!\d)
-前瞻,以确保下一个字符不是数字。这将确保变量名称不以数字开头。也将排除诸如1e3
[a-zA-Z0-9]+
-匹配1个以上的字母或数字如果您还希望这些变量也以数字开头并且是字母数字,则可以使用\b(?!\d+(?:[eE]\d+)?\b)[a-zA-Z0-9]+