我有一个数据:
#object
id=91
name=precka
material=18ST2
#topology
2, 1, 5, 4, 9, 8, -1
#points
566.068643742472, 135, 9
#object
id=92
name=precka2
material=18ST2
#topology
6, 1, 6, 4, 9, 8, -1
5, 1, 6, 4, 9, 8, -1
#points
216.068643742472, 235, 19
216.068643742472, 235, 19
现在我需要从id,name,material,#topology到#points获取所有内容。目前我设法编写了一个如下所示的正则表达式:
/#topology+([\s\S]*)#points([\s\S]+)/m
我想将其更改为从#object循环到#object并获取每个#object数据(id,name,topoloy ..)。这很难吗?
答案 0 :(得分:5)
String.split
#object
上的文字,并将正则表达式应用于函数返回的数组中的每个元素。
答案 1 :(得分:2)
如果您只需要这三组的内容。但是,如果还有其他组,正则表达式需要一些调整。
# /^\#object(.*\n(?:^(?!\#object|\#topology|\#points)[^\n]*\n)*)^\#topology(.*\n(?:^(?!\#object|\#topology|\#points)[^\n]*\n)*)^\#points(.*\n(?:^(?!\#object|\#topology|\#points)[^\n]*\n)*)/m
^ \#object
( # (1 start), Object
.* \n
(?:
^
(?! \#object | \#topology | \#points )
[^\n]* \n
)*
) # (1 end)
^ \#topology
( # (2 start), Topology
.* \n
(?:
^
(?! \#object | \#topology | \#points )
[^\n]* \n
)*
) # (2 end)
^ \#points
( # (3 start), Points
.* \n
(?:
^
(?! \#object | \#topology | \#points )
[^\n]* \n
)*
) # (3 end)