Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配字符串中特定坐标的正则表达式_Regex - Fatal编程技术网

Regex 匹配字符串中特定坐标的正则表达式

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是属于一起的坐标

-总有一个“Z”和一个“S”。对于介于“Z”和“S”之间的字符串没有限制

-第一个字母总是Z

-如果字母S后面跟着a:搜索应该停止,这是一个匹配;坐标完成

-如果S后面的下一个字符是(,则应搜索到仅下一个)

-因此,如果在S之后有a:或a),则为匹配

-如果S后面的下一个字符是+-*/搜索将停止,它也是匹配的

到目前为止,我已经有了这个正则表达式
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+)?


  • Z.*S
    -Literal Z,任何零次或多次非贪婪字符,直到Literal 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+)?