我想得到:
我试过了:
print_r(preg_match('/^A((?!\+A).)\+B(.*)$/', $string));
答案 0 :(得分:2)
所以看起来你所追求的基本模式是“A(数字)+ B(数字)”
你的表达似乎有点过于复杂,我只是使用:
preg_match('/^A\d+(\+B\d+)+$/', $input, $match);
如果输入可以是字母数字(A(alnum)+ B(alnum),请使用
preg_match('/^A[:alnum:]+(\+B[:alnum:]+)+$/', $input, $match);
代替。
基本上,2个绝对硬性要求是:输入字符串应以大写字母A开头,并且应该有一个+符号,后面跟一个大写字母B.无论两者之间的字符是什么,你只需要必须添加最符合您要求的角色组。从您给出\d+
(一个或多个数字)的示例似乎符合要求。如果“A00FF33 + B123ABC”应该有效,我会使用[:alnum:]
或[0-9A-F]
(对于十六进制值)。
一个或多个要求的技巧是为匹配的 + Belement 部分创建一个组,并重复该组一次或多次:
\+B\d+ //matches once
(\+B\d+)+ //matches once or more
答案 1 :(得分:1)
这个正则表达式适合你:
^A\d+\+B\d+(?:\+B\d+)*$
将其用作:
preg_match('/^A\d+\+B\d+(?:\+B\d+)*$/', $string);
这匹配A
后跟数字+B
后跟数字重复1次或更多次。
A4552+B948348
匹配,A4552+B948348+B948348+B948348
匹配,A3312+A192389+B2323+B948348
不匹配答案 2 :(得分:1)
并且在A / B
之后只有小数import pandas as pd
df = pd.DataFrame({'feature': feature_names , 'importance': importances})
df.sort_values('importance', ascending=False).set_index('feature').plot.bar(rot=0)