提取與字串相鄰的數字你好,有人可以幫我提取字串旁邊的數字嗎?
我的第 1 列如下所示,並希望提取與「HFA」(第 2 列)相鄰的數字。
我嘗試了以下 JSL,但無法獲得我期望的 column2
Num( 正規表示式( :第 1 列, "(\d\d\d)HFA | HFA(\d\d\d)", "\1" ) )
| 第1列 | 列2 |
| 400HFA isa300 | 400 |
| isa300 HFA400 | 400 |
感謝您考慮這個問題。
自動化和腳本編寫回复:提取與字符串相鄰的數字你好@jthi
非常感謝您提供該問題的替代解決方案,以及正則表達式上的鏈接。
回复:提取與字符串相鄰的數字你好@Craige_Hales ,
非常感謝您豐富了討論。
事實上,我首先從您的舊文章中了解了 JMP 的正則表達式!
https://community.jmp.com/t5/Uncharted/Regex/ba-p/21008
回复:提取與字符串相鄰的數字練習和測試正則表達式的好地方是https://regex101.com/ .

那些刪除了 JMP 轉義字符的註釋非常有用,當我編寫更複雜的正則表達式模式時,我必須開始添加它們(轉義字符的正則表達式問題)
回复:提取與字符串相鄰的數字謝謝@AprioriFish3134用於指出原始問題(沒有 \2),以及@ngambles一個好的解決方案。
如果您需要更多級別的嵌套 parens,或者示例中的順序 parens,只需從左到右計算開放的 parens 以發現後面的引用編號。 未使用的替代項的反向引用是一個空字符串。
Regex( "abac", "(((a)|(b)|(c))(c))+", "1=\1 2=\2 3=\3 4=\4 5=\5 6=\6" )
“1=ac 2=a 3=a 4= 5= 6=c”
有一件事可能並不明顯:反向引用也可以用在模式中。 這對於確保一致使用前導和尾隨引號或撇號很有用:
Write( Regex(
"before 'a \!"b\!" c' after", // before 'a "b" c' after
"(\!"|')(.*?)\1", // ("|')(.*?)\1
"\2"
) )
一個“乙”丙
(\!" 轉義符在字符串內放置一個引號;註釋顯示字符串的文本。)在這個例子中,\1 組可以匹配 " 或 ',\2 匹配所有文本直到另一個出現的\1.
如果你這樣寫正則表達式,請使用一些註釋! 下一個維護者會很感激。
回复:提取與字符串相鄰的數字如果出於某種原因需要解決該問題@ngambles提到,一種相當簡單的方法是使用 Regex Match 而不是 Regex
Names Default To Here(1);
a = "400HFA isa300";
b = "isa300 HFA400";
c = "400HFA300";
d = "400HF300";
rgx_pattern = "(\d*)(?:HFA)(\d*)";
show(Regex Match(a, rgx_pattern));
show(Regex Match(b, rgx_pattern));
show(Regex Match(c, rgx_pattern));
show(Regex Match(d, rgx_pattern));
正則表達式匹配將需要一些額外的檢查,因為它會返回捕獲的組列表。
回复:提取與字符串相鄰的數字嗨 Ngambels,
非常感謝您的幫助。 它解決了這個問題。
我試過了
"(\d*)HFA(\d*)"
但顯然我錯過了(我不知道我可以而且必須同時使用 \1 和 \2)
"\1\2"
我從你那里和通過這次討論學到了新東西。
再一次,非常感謝你!
回复:提取與字符串相鄰的數字給定小示例集,以下公式有效:
Num( Regex( :column1, "(\d*)HFA(\d*)", "\1\2" ) )
如果你有像“400HFA300”這樣的實例,這個解決方案就會遇到問題。它將返回 400300。