My String看起来像:
Especificação do Título
GRND3 - GRENDENE
GRND3 - GRENDENE
POSI3 - POSITIVO INF
我需要在3个独立的组中获得GRND3,GRND3,POSI3。
有什么表达方式可以轻松完成吗?
答案 0 :(得分:1)
未指定特定语言的问题是^
可能意味着开始行或文本的开头。
如果^
表示开头行
"^(\w+) -"
应该涵盖它。然后你得到第一组(再次是语言特定的)。
如果^
表示文字开头(也适用于上述情况):
在不同的系统上有不同的行分隔符,但通常这应该有效:
"\n(\w+) -"
再次获得第一组。
请注意,我假设您要获取的字符串仅包含字母和数字,在这种情况下\w+
(表示一个或多个(+
)字符(字母或数字) )此字符串后跟一个空格,然后是-
。
不确定“3个分离的群组”是什么意思,你通常只是遍历所有的匹配,但是如果你想在1个正则表达式中匹配它们,那么这样的事情应该这样做:
"\n(\w+) - (?:\w|\s)*\r?\n(\w+) - (?:\w|\s)*\r?\n(\w+) -"
虽然这不够漂亮,但难以维护和理解,并且容易出错。