我正在使用stata,並且有一個名爲「practice」的變量,它有一個實踐列表和它們在括號內的5個字符代碼。在Stata中提取正則表達式(正則表達式)
我想僅將代碼部分提取到新變量中。下面是例子的什麼變量「實踐」中的數據是這樣的:
practice 1 name (JRX76)
practice 2 name but longer (XN6S1)
practice 3 name (4NB87)
practice 4 name but longer (north) (RS236)
practice 5 name (WSZ92)
我用下面的代碼至今:
gen code=regexs(2) if regexm(practice, "(\()+([a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9])")
其中按照格式完美的作品,除了數據上面的「練習4」,它提取「北」而不是「RS236」。
我試過玩過$符號,但沒有成功。
我還沒有制定出如何「如果」與regexs語句組合,沿邏輯線 「如果你發現2‘(’,在第二個‘(’後的5個字符表情」。
會有人能夠指出我在正確的方向上本嗎?
不是問題,但我注意到,在你的例子中,所需的代碼只是字符串值中的最後一個「單詞」(在函數'word()'的意義上(剝去圓括號很容易)。 –
跟隨@NickCox的觀察 - 基於你的例子,所需的子字符串總是字符串中的最後一個單詞,並且總是5個字符長希望避免使用正則表達式的任何人都可以縮短'substr(word(practice, -1),2,5)' – ander2ed