Regex 在括号内反转两个字符串
我有一个Regex 在括号内反转两个字符串,regex,database,sas,Regex,Database,Sas,我有一个坐标列,它引用了一个具有3维[z][x][y]的ID。我想做的是用[y]反转[x]维度,使其成为一个具有(仍然)3个维度但顺序不同的表:[z][y][x] 以下是该列的一个片段: +------------------------+ |坐标| +------------------------+ |ID_01.02.a[][01][20]| |ID_02.00[010][02][017]| |ID_03.01[][[010]| |ID_04.01.w[010][]| +---------
坐标
列,它引用了一个具有3维[z][x][y]
的ID。我想做的是用[y]
反转[x]
维度,使其成为一个具有(仍然)3个维度但顺序不同的表:[z][y][x]
以下是该列的一个片段:
+------------------------+
|坐标|
+------------------------+
|ID_01.02.a[][01][20]|
|ID_02.00[010][02][017]|
|ID_03.01[][[010]|
|ID_04.01.w[010][]|
+------------------------+
下面是重现此代码段的代码:
数据已经存在;
输入坐标:$30。;
数据线;
ID_01.02.a[][01][20]
ID_02.00[010][02][017]
ID_03.01[][[010]
ID_04.01.w[010][]
;
最终表格预计为:
+------------------------+
|坐标|
+------------------------+
|ID_01.02.a[][20][01]|
|ID_02.00[010][017][02]|
|ID_03.01[][010][]|
|ID_04.01.w[010][]|
+------------------------+
当我尝试使用scan函数时,它不起作用,因为我找不到一个可靠的索引,例如
x\u after=trim(scan(坐标,2,“[]))
。实际上,如果z轴不为空,它将输出z轴,如果z轴为空,它将输出x轴。您可以通过PRXCHANGE
访问正则表达式电源,以修改包含简单模式和复杂模式的值
例如:
数据已经存在;
输入坐标$char50。;
数据线;
ID_01.02.a[][01][20]
ID_02.00[010][02][017]
ID_03.01[][[010]
ID_04.01.w[010][]
;
数据需求;
集有;
放置坐标;
坐标=prxchange
('s/(.\[.\])(\[.\])(\[.\])/$1$3$2/'
1.
,坐标
);
放置坐标/;
跑
日志
ID_01.02.a[][01][20]
ID_01.02.a[][20][01]
ID_02.00[010][02][017]
ID_02.00[010][017][02]
ID_03.01[][[010]
ID_03.01[][010][]
ID_04.01.w[010][]
ID_04.01.w[010][]
您可以通过PRXCHANGE
访问正则表达式电源,以修改包含简单模式和复杂模式的值
例如:
数据已经存在;
输入坐标$char50。;
数据线;
ID_01.02.a[][01][20]
ID_02.00[010][02][017]
ID_03.01[][[010]
ID_04.01.w[010][]
;
数据需求;
集有;
放置坐标;
坐标=prxchange
('s/(.\[.\])(\[.\])(\[.\])/$1$3$2/'
1.
,坐标
);
放置坐标/;
跑
日志
ID_01.02.a[][01][20]
ID_01.02.a[][20][01]
ID_02.00[010][02][017]
ID_02.00[010][017][02]
ID_03.01[][[010]
ID_03.01[][010][]
ID_04.01.w[010][]
ID_04.01.w[010][]
您可以使用SCAN()完成此操作。使用[]
作为分隔符和m
修饰符。但是现在字符串有6个值,而不是4个值,因为在带有][
的位置之间有空值
这里有一种方式可以显示正在发生的事情
数据已经存在;
输入坐标$50。;
卡;
ID_01.02.a[][01][20]
ID_02.00[010][02][017]
ID_03.01[][[010]
ID_04.01.w[010][]
;
数据需求;
集有;
我想要50美元;
阵列温度[6]$50;
i=1时变暗(温度);
温度[i]=扫描(坐标,i,“[]”,m');
结束;
want=cats(临时[1]、'['、临时[2]、']['、临时[6]、']['、临时[4]、']');
第一滴;
跑
结果:
Obs坐标需要temp1 temp2 temp3 temp4 temp5 temp6
1 ID_01.02.a[][01][20]ID_01.02.a[][20][01]ID_01.02.a 01 20
2 ID_02.00[010][02][017]ID_02.00[010][017][02]ID_02.00 010 02 017
3 ID_03.01[][]010]ID_03.01[][010][]ID_03.01 010
4 ID_04.01.w[010][]ID_04.01.w[010][]ID_04.01.w 010
您可以使用SCAN()。使用[]
作为分隔符和m
修饰符。但是现在您的字符串有6个值,而不是4个值,因为[
位置之间有空值
这里有一种方式可以显示正在发生的事情
数据已经存在;
输入坐标$50。;
卡;
ID_01.02.a[][01][20]
ID_02.00[010][02][017]
ID_03.01[][[010]
ID_04.01.w[010][]
;
数据需求;
集有;
我想要50美元;
阵列温度[6]$50;
i=1时变暗(温度);
温度[i]=扫描(坐标,i,“[]”,m');
结束;
want=cats(临时[1]、'['、临时[2]、']['、临时[6]、']['、临时[4]、']');
第一滴;
跑
结果:
Obs坐标需要temp1 temp2 temp3 temp4 temp5 temp6
1 ID_01.02.a[][01][20]ID_01.02.a[][20][01]ID_01.02.a 01 20
2 ID_02.00[010][02][017]ID_02.00[010][017][02]ID_02.00 010 02 017
3 ID_03.01[][]010]ID_03.01[][010][]ID_03.01 010
4 ID_04.01.w[010][]ID_04.01.w[010][]ID_04.01.w 010
稍作修改,您仍然可以使用您的程序:x_after=trim(扫描(tranwrd(坐标“[]”,“[]”,“[]”),2“[]”)
。有人知道为什么在这个问题中每隔一行用倾斜字体显示数据吗?为什么它甚至在数据块中寻找格式线索?我认为这和语言语法处理有关(仍在挖掘)。有趣的部分是带有类的spanhljs-*
。挖掘时,我发现现在支持HTML表格!在meta中谈论下划线后的斜体。解决方法似乎是将none指定为代码语言``` none
,只需稍作更改,您仍然可以使用您的程序:x_after=trim(scan(tranwrd(坐标“[]”、“[]”)、2“[]”)有人知道为什么用倾斜字体显示这个问题中的每一行数据吗?为什么它甚至是loo