【发布时间】:2015-06-15 15:17:14
【问题描述】:
假设我有一个长字符串,它是由所有匹配某个正则表达式的子字符串组成的。
例如,我有 2 个正则表达式:
标识符:^[a-z]\S
接线员:^(:|;|*)
给定以下字符串:
a12vc+adh*v15
我想得到所有匹配的项目,比如:
While(hasNextRegex(str)) {
printf("%s\n", nextRegex(str));
}
将打印:
a12vc (first match)
+ (second match)
adh (third match)
* (fourth match)
v15 (fifth match)
我正在为正则表达式使用slre 库。仅限 C 语言。
你对我的问题有什么想法吗?提前致谢!!
【问题讨论】:
-
比利你有 1k 代表你至少可以格式化你的问题:)
-
您能否更好地解释您的问题?您提供的任何正则表达式都不会产生您想要的任何匹配项。
-
@Fede 当我使用网络时,我正在这样做。目前我正在使用移动设备。
-
由于
\S匹配任何非空格字符,因此您的标识符似乎必须为两个字符长并以小写字母开头。因此,aa、aZ、a+和a~是合法标识符。尚不清楚a:或a;或a*是否应该是合法标识符。您对字符串的期望的解释与您的正则表达式想要匹配的不匹配。您需要学习 SLRE 支持的正则表达式语言,以及库的 API。 -
@JonathanLeffler - 我确实有一些不准确之处,这就是我说
for example的原因。这不是问题。假设我确实有一个有效的正则表达式,问题是如何将它们作为子字符串捕获。