2017-06-18 117 views
0

我在OpenRefine一欄,我想操縱:正則表達式從數字刪除字符,但並非所有的字符

有字符串(例如:FL),包含數字的字符串(123F423),和數字

我想擺脫「污染」數字(如123F423)的所有字母(AZ),但我不想在「乾淨」的字符串和數字上改變任何內容。

實施例:

FL - > FL

123F324 - > 123324

432531 - > 432531

AB - > AB

342J34 - > 34234

+0

你是不是要把123FL423換成123F423? –

+1

不太確定你是如何理解它的。從123F423我想去123423 – Buitenlander

+0

mmm,更多地解釋一下,告訴我們輸入輸出的例子來了解更多 –

回答

1

您可以搜索並刪除:

(?<=\d)[A-Za-z]+|[A-Za-z]+(?=\d) 

See demo

正則表達式表示一個或多個字母不是由一個數字前綴,或者不跟一個數字。它使用lookaround

編輯:如果不支持環視,你可以簡單地搜索

(\d)[A-Za-z]+|[A-Za-z]+(\d) 

$1$2更換(見demo 2

+0

這是一個非常有趣的解決方案,通過替代。 – Zhro

0

你不能做你想做的單一操作的正則表達式旨在提供特定的匹配而不是缺少匹配,並且不會爲您多聯結多個結果。

例如,您可以重複使用[A-Z]+的正則表達式,並刪除違規的匹配項或在一個正則表達式中搜索所有數字[0-9]+一次,並連接所有得到的匹配項。

第二個選項會更快,因爲它只評估一次表達式。

編輯

@horcrux有一個更好的答案。

相關問題