0

我的字符串看起来像:

Especificação do Título

GRND3 - GRENDENE

GRND3 - GRENDENE

POSI3 - POSITIVO INF

我需要将 GRND3、GRND3、POSI3 分成 3 个单独的组。

有什么表达我可以轻松做到的吗?

4

1 回答 1

1

未指定特定语言的问题是^可能意味着行首或文本开始。

if^表示行首:

"^(\w+) -"

应该覆盖它。然后你得到第一组(同样是特定于语言的)。

如果^表示文本的开头(在上述情况下也可以):

不同的系统上有不同的行分隔符,但通常这应该有效:

"\n(\w+) -"

并再次获得第一组。

请注意,我假设您要获取的字符串仅包含字母和数字,在这种情况下\w+(这意味着一个或多个 ( +) 单词字符(字母或数字))并且该字符串后跟一个空格,然后是 a -

不确定“3 个单独的组”是什么意思,您通常只需遍历所有匹配项,但如果您想在 1 个正则表达式中匹配它们,应该这样做:

"\n(\w+) - (?:\w|\s)*\r?\n(\w+) - (?:\w|\s)*\r?\n(\w+) -"

虽然这并不漂亮,但难以维护和理解并且容易出错。

于 2013-04-17T15:05:28.843 回答