Regex 匹配字符串中特定坐标的正则表达式
-Z和S是属于一起的坐标 -总有一个“Z”和一个“S”。对于介于“Z”和“S”之间的字符串没有限制 -第一个字母总是Z -如果字母S后面跟着a:搜索应该停止,这是一个匹配;坐标完成 -如果S后面的下一个字符是(,则应搜索到仅下一个) -因此,如果在S之后有a:或a),则为匹配 -如果S后面的下一个字符是+-*/搜索将停止,它也是匹配的 到目前为止,我已经有了这个正则表达式Regex 匹配字符串中特定坐标的正则表达式,regex,Regex,-Z和S是属于一起的坐标 -总有一个“Z”和一个“S”。对于介于“Z”和“S”之间的字符串没有限制 -第一个字母总是Z -如果字母S后面跟着a:搜索应该停止,这是一个匹配;坐标完成 -如果S后面的下一个字符是(,则应搜索到仅下一个) -因此,如果在S之后有a:或a),则为匹配 -如果S后面的下一个字符是+-*/搜索将停止,它也是匹配的 到目前为止,我已经有了这个正则表达式Z.*S(?:(?=:)|.*?\) 我的字符串可能是这样的: string cell = "SUM(Z(-44)S:Z(-1
Z.*S(?:(?=:)|.*?\)
我的字符串可能是这样的:
string cell = "SUM(Z(-44)S:Z(-1)S)"
匹配=>Z(-44)S和Z(-1)S
匹配=>ZS(-2)和ZS(-1)
匹配=>Z(-1)S(-4)和Z(12)S(-2)
匹配=>Z(-44)S和Z(36)S(4)
匹配=>Z(-44)S和Z(36)S
匹配=>Z55S和Z63S56以及Z110S和Z142S以及Z172S56
string cell = "(+Z63S56+Z110S(4)+0)"
匹配=>Z63S56和Z110S(4)
我希望这是可以理解的
我非常感谢您的帮助以下内容对您有用吗
Z.*?S(?:\([^)]+\))?(?:\d+)?
见
-Literal Z,任何零次或多次非贪婪字符,直到Literal SZ.*S
-打开第一个非捕获组。(?:
-一个文字开头的旁白,后面跟着一个或多个结束旁白以外的任何东西,以及一个文字结尾旁白\([^]+\)
-关闭第一个非捕获组并将其设置为可选)?
-打开第二个非捕获组。(?:
-任意数字一次或多次\d+
-关闭第二个非捕获组并将其设置为可选)?
Z.*S(?:\([^()]*\)|[^-+*/:]+(?=[-+*/:])?
()@WiktorStribiż它能工作吗!谢谢你!
string cell = "Z(-44)S:Z(36)S(4)"
string cell = "Z(-44)S:Z(36)S"
string cell = "(+Z55S+Z63S56+Z110S+Z142S+Z172S56+0)"
string cell = "(+Z63S56+Z110S(4)+0)"
Z.*?S(?:\([^)]+\))?(?:\d+)?