Autohotkey 正则表达式排除部分字符串
Autohotkey regex exclude part of string
使用 Autohotkey,我需要排除字符串的一部分,同时仍然写入它的第一部分和最后一部分。
我会解释。给定字符串:
GSM NWS\TOP N Pool 1. TOP N Pool 1 Rank :
GSM NWS\TOP N Pool 1. TOP N Pool 1 BCCH :
GSM NWS\TOP N Pool 1. TOP N Pool 1 BSIC :
我只需要提取从“1.
”到“:
”的部分,不包括“TOP N Pool 1
”部分。因此,想要的字符串应该是:
- 排名
- BCCH
- BSIC
我已经解决这个问题很久了,而且我使用了 RegExMatch:
RegExMatch(A_LoopField, "\d+\.(.*?)\[\d\]", fields%lineCount%)
此 RegEx 不排除我要省略的中间字符串。
有什么想法吗?
P.S:我对这种语言比较陌生,对正则表达式的使用也是如此...如果我在这里犯了任何基本错误,请原谅。
谢谢大家
您可以使用捕获组,例如在正则表达式中:
(\d\.).+\d\s(\w+)\s:
括号中的部分捕获文本,您可以在之后使用,使用 </code>、<code>
等。这里 </code> 用于 <code>(\d\.)
,例如捕获: 1.
和 (\w+)
的 </code> 应该捕获 <code>Rank
。所以我想(因为我没有 AHK 的背景)你应该能够做这样的事情:
NewStr := RegExReplace("GSM NWS\TOP N Pool 1. TOP N Pool 1 Rank :", "(\d\.).+\d\s(\w+)\s:", "")
结果应该是:1.Rank
在这里查看正则表达式的工作原理:DEMO
使用 Autohotkey,我需要排除字符串的一部分,同时仍然写入它的第一部分和最后一部分。 我会解释。给定字符串:
GSM NWS\TOP N Pool 1. TOP N Pool 1 Rank :
GSM NWS\TOP N Pool 1. TOP N Pool 1 BCCH :
GSM NWS\TOP N Pool 1. TOP N Pool 1 BSIC :
我只需要提取从“1.
”到“:
”的部分,不包括“TOP N Pool 1
”部分。因此,想要的字符串应该是:
- 排名
- BCCH
- BSIC
我已经解决这个问题很久了,而且我使用了 RegExMatch:
RegExMatch(A_LoopField, "\d+\.(.*?)\[\d\]", fields%lineCount%)
此 RegEx 不排除我要省略的中间字符串。
有什么想法吗?
P.S:我对这种语言比较陌生,对正则表达式的使用也是如此...如果我在这里犯了任何基本错误,请原谅。
谢谢大家
您可以使用捕获组,例如在正则表达式中:
(\d\.).+\d\s(\w+)\s:
括号中的部分捕获文本,您可以在之后使用,使用 </code>、<code>
等。这里 </code> 用于 <code>(\d\.)
,例如捕获: 1.
和 (\w+)
的 </code> 应该捕获 <code>Rank
。所以我想(因为我没有 AHK 的背景)你应该能够做这样的事情:
NewStr := RegExReplace("GSM NWS\TOP N Pool 1. TOP N Pool 1 Rank :", "(\d\.).+\d\s(\w+)\s:", "")
结果应该是:1.Rank
在这里查看正则表达式的工作原理:DEMO