正则表达式:捕获不带前导字符的字符串
RegEx: Capture string without a leading character
大家晚上好。
我的琴弦:
4x^2+1.5-x
4x^2-x+1.5
1.5+4x^2-x
我想捕获这些方程中没有"x"的部分,或者前面没有+/-以外的另一个符号(1.5)。我尝试了这个正则表达式:
[^^](d+(.d+)?)(?!x)
它匹配搜索的部分,但有一个问题:匹配包含前导 +/-。我以为我可以通过回溯来解决这个问题,但由于我使用 ECMAScript 的 C++11 库,因此不支持这样做。
有人知道如何解决这个问题吗?
谢谢:)
根据
更多注释重写。
好的,根据您的评论中提供的其他标准和说明:
- 提取数字后面没有"x^n"。
- 它们可以出现在任何地方,在开头,中间或结尾
- 他们可以(!)在他们前面有一个"+"/"-"。 如果是"+",则不应捕获此内容,但应捕获"-"。(澄清:需要同时捕获两者,只是显示
-
) - 在这些数字之后,也可以有一个"+"或"-"(罕见的情况,但需要注意)。
- (重申:不能使用负面回溯)
(?:[-+]|^)[0-9.]+(?=[-+]|$)
这将匹配以下内容(这里没有好的格式化和突出显示的方法,所以我用 []
包装了匹配项):
4x^2[+8.15]-x
4x^2-x[+1.25]
[1.9]+4x^2-x
[3]+2x^4-x
x[-6]
[.7]+3x
[-.75]+3x
4x[-0.5]
4x[+0.8]
77x
9.8x
-2.52x^3-4x^2[+1.45]
4x^2[+8.15][-1.5]
您将需要剥离前导+
Array
(
[0] => Array
(
[0] => +8.15
[1] => +1.25
[2] => 1.9
[3] => 3
[4] => -6
[5] => .7
[6] => -.75
[7] => -0.5
[8] => +0.8
[9] => +1.45
[10] => +8.15
[11] => -1.5
)
)
相关文章:
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将 NULL 与 C 的字符* 字符串一起使用
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 无法将常量字符字符串传递给模板类
- 如何组合一个宽字符字符串,中间插入一些空字符
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 从给定索引返回子字符字符串的函数
- 字符 [](c 字符串)的初始化标准
- 如何将字符字符串用作数学运算符
- 将 Unicode 字符/字符串写入文件
- C++,字符* 字符串修改
- 如何有效地用不同的整数元素替换字符字符串的元素
- C++:如果我们在字符串中添加一些整数,为什么它会从开头删除该数量的字符?(字符串 + 整数)
- strcpy正在复制sth字符i字符串.如何解决此错误
- 在C++中将双精度转换为字符*/字符串
- C 中的宽字符字符串
- 如何提取C 中的字符/字符串之间的字符串
- 无法将字符/字符串转换为int
- 带有指针的反转字符字符串
- 反转字符串中的 n 个字符(字符串中没有空格),而不使用 c++ 中的内置函数