Regex 在进一步匹配之前使用正则表达式收集组

Regex 在进一步匹配之前使用正则表达式收集组,regex,swift,Regex,Swift,这是从这里开始的问题的最后阶段: 我有一个正则表达式: 第一组收集所有匹配字符串,不管是否有带数字的运算符 匹配组的示例: Group 1: SOCCERCLUB*9+2,ZX,FP*7+8.90 我想修改正则表达式来收集字符串,而不使用操作符(如果有) 我想收集的内容的示例 Group 1: SOCCERCLUB*9+2,ZX,FP*7+8.90 Group 2: SOCCERCLUB,ZX,FP 有人能帮我吗? 谢谢最好使用正则表达式清除字符串,然后进行匹配 let txt =

这是从这里开始的问题的最后阶段:

我有一个正则表达式:

第一组收集所有匹配字符串,不管是否有带数字的运算符

匹配组的示例:

Group 1: SOCCERCLUB*9+2,ZX,FP*7+8.90
我想修改正则表达式来收集字符串,而不使用操作符(如果有)

我想收集的内容的示例

Group 1: SOCCERCLUB*9+2,ZX,FP*7+8.90   

Group 2: SOCCERCLUB,ZX,FP
有人能帮我吗?

谢谢

最好使用正则表达式清除字符串,然后进行匹配

let txt = "SOCCERCLUB*9+2,ZX,FP*7+8.90"
let regex = try! NSRegularExpression(pattern: "\\*|\\d|\\+|\\.", options: .allowCommentsAndWhitespace)
let newString = regex.stringByReplacingMatches(in: txt, options: .withoutAnchoringBounds, range: NSMakeRange(0, txt.characters.count), withTemplate: "")

print(newString) // SOCCERCLUB,ZX,FP

如果您希望实际的正则表达式组只包含
SOCCERCLUB、ZX、FP
,那么这是不可能的。你不能有在中间跳过字符但两端都匹配的正则表达式组。为什么不拆分逗号上的字符串,然后解析剩下的内容呢?我不想跳过任何内容,我只想收集不带运算符的正则表达式组,类似这样:(\b[A-Z]{2,12}\b)+,但它只收集插入的最后一个字符串(示例中的FP)。你确认这是不可能的吗?你要做的是得到
{this part}{但不是这个part}{this part}{但不是这个part}{this part}
。这就是我所说的“跳过”某些字符串的意思。用简单的正则表达式匹配实现这一点是不可能的。您可以用逗号分割字符串,然后取出所需的部分(
SOCCERCLUB
ZX
、和
FP
),但不能将这些部分放在一个正则表达式组中。完美,清晰。我会照你的建议去做。最后一个字符串是否可以避免逗号?示例:SOCCERCLUB*9+2,ZX,FP*7+8.90**,**在我的正则表达式中,插入的字符串将匹配,即使最后一个字符串末尾有逗号,我不希望这样。消极的回头看垃圾堆?我不知道你的意思。您在问题中链接到的正则表达式与字符串
SOCCERCLUB*9+2,ZX,FP*7+8.90**,***
不匹配。我想你的意思是它不应该匹配,例如,
SOCCERCLUB*9+2,ZX,FP*7+8.90,
。在这种情况下,最简单的事情就是在末尾,在
$
之前(或者在后面;这无关紧要),放一个否定的lookback:
(?)?。