3

数字を含むすべての単語を削除したい、例:

LW23 London W98 String

上記の文字列から、私が残したいのは。だけです"London String"。これは正規表現で実行できますか?

私は現在Pythonを使用していますが、PHPコードも問題ありません。

ありがとう!

編集:

これが私が今できることです:

>>> a = "LW23 London W98 String"
>>> b = a.split(' ')
>>> a
['LW23', 'London', 'W98', 'String']
4

6 に答える 6

6

はい、次のことができます。

result = re.sub(
    r"""(?x) # verbose regex
    \b    # Start of word
    (?=   # Look ahead to ensure that this word contains...
     \w*  # (after any number of alphanumeric characters)
     \d   # ...at least one digit.
    )     # End of lookahead
    \w+   # Match the alphanumeric word
    \s*   # Match any following whitespace""", 
    "", subject)
于 2012-11-19T12:43:23.583 に答える
3

「単語」が何であるかによって異なりますが、区切り文字として空白を話している場合、および正規表現である必要がない場合:

>>> ' '.join(filter(str.isalpha, a.split()))
'London String'
于 2012-11-19T12:54:25.200 に答える
3

このパターンで preg_replace を試すことができます:

/(\w*\d+\w*)/

何かのようなもの$esc_string = preg_replace('/(\w*\d+\w*)/', '', $old_string);

于 2012-11-19T12:45:38.363 に答える
1

正規表現と理解を使用してこれを行うことができます。

clean = [w for w in test.split(' ') if not re.search("\d", w)]

また

words = test.split(' ')
regex = re.compile("\d")
clean = [w for w in words if not regex.search(w) ]

入力:

"LW23 London W98 String X5Y 99AP Okay"

出力:

['London', 'String', 'Okay']
于 2012-11-19T12:53:26.207 に答える
1

私は 100% 確実ではありません。これは考えられる解決策の提案にすぎません。私は Python の達人ではありませんが、完全なコードを見れば、何をすべきかがよくわかると思います。

私の提案は、文字列のセクションをリストに追加し、各単語をポップアウトして使用し、関数を使用して数字をチェックし、数字が含まれている場合はそれらを削除し、含まれていない場合は新しいリストに追加することです。リストを並べ替えて、単語が適切な順序になるようにします。

これが役に立たない場合は申し訳ありませんが、問題が発生した場合、この種の解決策が私が開始する場所であることを知っています.

于 2012-11-19T12:45:48.537 に答える
0

数字を含む単語を一致させることができます

/\w*\d+\w*/

または、数字なしですべての単語を一致させることができます(そしてそれらを保持します)

/\w+/
于 2012-11-19T12:49:54.983 に答える