通過正則表達式找到最後一個+或者*或者/符號
'123+102*123-10.5+10.5'
'123+102*123-10.5*10.5'
'123+102*123-10.5/10.5'
如何找到最後這個加號呢?
我目前只能這樣寫,從前面開始找
'123+102*123-10.5+10.5'. search([^0-9\\.])
這返回的是3 也就是 第一個+符號的位置,我想得到的是最後一個+符號的位置.該怎麽使用正則表達式?
【以下回答由 GPT 生成】
根据问题描述,你想要找到最后一个+、*或/符号的位置,可以尝试以下解决方案:
lastIndexOf()
函数来实现目标。正则表达式匹配最后一个+、*或/符号时,通过lastIndexOf()
函数找到最后一个匹配结果的位置。let str = '123+102*123-10.5+10.5';
let regex = /[\+\*\/]/;
let lastIndex = str.lastIndexOf(regex);
console.log(lastIndex);
这样返回的结果就是14,也就是最后一个+符号的位置。
解释: - /[\+\*\/]/
是一个正则表达式,\+\*\/
分别匹配+、*和/这三个符号。 - lastIndexOf()
函数会从字符串的末尾开始向前查找,找到第一个匹配结果并返回其位置。 - 最后将位置输出到控制台,你可以根据需要进行进一步处理。
然而,由于原问题标签为mysql,如果你在MySQL数据库中执行该操作,可以采用SQL语言的方式来实现:
SELECT
LENGTH('123+102*123-10.5+10.5') - LOCATE(REVERSE(REGEXP_REPLACE('123+102*123-10.5+10.5', '[0-9\.]*$')), REVERSE('123+102*123-10.5+10.5')) + 1 AS LastSymbolPosition;
这样就可以返回字符串中最后一个+、*或/符号的位置。
【相关推荐】
你可以使用以下的正则表达式,它会找到最后一个符合条件的运算符:
import re
# 你的字符串
s = '123+102*123-10.5+10.5'
# 找到最后一个符合条件的运算符
last_operator_index = len(re.findall(r'[+\-*\/]', s)) - 1
print(last_operator_index)
这里的正则表达式 '[+-/]' 匹配的是所有符合条件的运算符(即 +、-、、/)。re.findall
函数会返回所有匹配的结果,然后我们通过计算其长度减一就可以得到最后一个符合条件的运算符的位置。
请注意,如果字符串中没有符合条件的运算符,re.findall
会返回一个空列表,此时 len(re.findall(r'[+\-*\/]', s)) - 1
的结果就是 -1,因此在使用这个结果之前,你可能需要先检查它是否大于或等于0。