NetSuite 保存的搜索:REGEXP_SUBSTR 模式问题
NetSuite Saved Search: REGEXP_SUBSTR Pattern troubles
我正在尝试分解如下所示的字符串:
|5~13~3.750~159.75~66.563~P20~~~~Bundle A~~|
这里提供第二个例子供参考:
|106~10~0~120~1060.000~~~~~~~|
这是静态尺寸项目的第三个示例:
|3~~~~~~~~~~~5:12|
示例 4:
|3~23~5~281~70.250~upper r~~~~~~|
|8~22~6~270~180.000~center~~~~~~|
|16~22~1~265~353.333~center~~~~~~|
有时同一个字符串中有多行。
我不太熟悉为 regexp_substr 设置模式,希望得到一些帮助!
字符串总是有'|'在开头和结尾,11 '~' 用于分隔我希望获得的 numeric/text 值。此外,一些数字字符有小数点,而另一些则没有。如果它有助于像这样分隔值:
|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|
正如你所看到的,如果没有指定的东西它显示为空白,但它可能在另一个字符串中有它们,所有值都有数据的情况很少见。
对于这个具体案例,我相信 regexp_substr 将是我的最佳选择,但如果有人有其他建议,我很乐意试一试!
这是我到目前为止能够想出的公式(文本):
REGEXP_SUBSTR({custbody_msm_cut_list},'[[:alnum:]. ]+|$',1,1)
这使我能够提取字符串中的所有匹配项,但如果排除了某些字段,则很难显示正确的数据。
TRIM(REGEXP_SUBSTR({custbody_msm_cut_list}, '^\|(([^~]*)~){1}',1,1,'i',2))
从字符串的开头开始,匹配竖线字符 |
,然后匹配波浪号以外的任何字符 ~
,然后匹配波浪号。重复N次{1}
。 Return 这些重复中的最后一个。
您可以控制大括号中的整数处理多少波浪号{1}
EG:
TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){1}',1,1,'i',2))
returns“数量”
TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~~~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){7}',1,1,'i',2))
returns“打孔图案”
最终值 Pitch
是一个稍微特殊的情况,因为它后面没有波浪号:
TRIM(REGEXP_SUBSTR('|~~~~~~~~~~ Radius~ Pitch|', '^\|(([^~]*)~){11}([^\|]*)',1,1,'i',3))
改编自
我正在尝试分解如下所示的字符串:
|5~13~3.750~159.75~66.563~P20~~~~Bundle A~~|
这里提供第二个例子供参考:
|106~10~0~120~1060.000~~~~~~~|
这是静态尺寸项目的第三个示例:
|3~~~~~~~~~~~5:12|
示例 4:
|3~23~5~281~70.250~upper r~~~~~~|
|8~22~6~270~180.000~center~~~~~~|
|16~22~1~265~353.333~center~~~~~~|
有时同一个字符串中有多行。
我不太熟悉为 regexp_substr 设置模式,希望得到一些帮助!
字符串总是有'|'在开头和结尾,11 '~' 用于分隔我希望获得的 numeric/text 值。此外,一些数字字符有小数点,而另一些则没有。如果它有助于像这样分隔值:
|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|
正如你所看到的,如果没有指定的东西它显示为空白,但它可能在另一个字符串中有它们,所有值都有数据的情况很少见。
对于这个具体案例,我相信 regexp_substr 将是我的最佳选择,但如果有人有其他建议,我很乐意试一试!
这是我到目前为止能够想出的公式(文本):
REGEXP_SUBSTR({custbody_msm_cut_list},'[[:alnum:]. ]+|$',1,1)
这使我能够提取字符串中的所有匹配项,但如果排除了某些字段,则很难显示正确的数据。
TRIM(REGEXP_SUBSTR({custbody_msm_cut_list}, '^\|(([^~]*)~){1}',1,1,'i',2))
从字符串的开头开始,匹配竖线字符 |
,然后匹配波浪号以外的任何字符 ~
,然后匹配波浪号。重复N次{1}
。 Return 这些重复中的最后一个。
您可以控制大括号中的整数处理多少波浪号{1}
EG:
TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){1}',1,1,'i',2))
returns“数量”
TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~~~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){7}',1,1,'i',2))
returns“打孔图案”
最终值 Pitch
是一个稍微特殊的情况,因为它后面没有波浪号:
TRIM(REGEXP_SUBSTR('|~~~~~~~~~~ Radius~ Pitch|', '^\|(([^~]*)~){11}([^\|]*)',1,1,'i',3))
改编自