2012-02-03 5 views
1

を使用して置き換える私はちょうどタグにタグですべての単語を交換する必要があり、このは、正規表現のpython

s = " zero/NN divided/VBD by/IN anything/NN is zero/NN" 

のような文があります。出力は、私は正規表現を使用してみました

s = "NN VBD IN NN is NN" 

この

tup = re.sub(r"\s*/$" , "", s) 

のように置き換えますが、これは私に正しい出力を与えていないはずです。助けてください

答えて

3

これは、あなたが欲しいの出力が得られます。

tup = re.sub(r"\b\w+/" , "", s) 

\b\w+少なくとも一つの単語文字(a-zA-Z0-9_)と、少なくともスラッシュに続く単語の境界を、一致しています。

+0

これはかなりうまくいきます!どうもありがとうございます !! – dheeraj

0

\sの文字グループはすべて空白文字と一致しますが、これはあなたの望むようには見えません。あなたは、空白以外の文字以外のすべての文字を必要としていると思います。あなたはまた、例えば、タグが何であるかについて、より具体的にすることができます

tup = re.sub(r"\S+/([A-Z]+)" , r"\1", s) 

これはスラッシュと、その後だけ大文字と大文字のシーケンスが続く、すべての非空白文字に置き換えられます。

2

試してみてください。私の正規表現のいずれかの側に

tup = re.sub(r"[a-z]*/" , "", s) 

In [1]: s = " zero/NN divided/VBD by/IN anything/NN is zero/NN" 
In [2]: tup = re.sub(r"[a-z]*/" , "", s) 
In [3]: print tup 
NN VBD IN NN is NN 
+0

これは最初の回答とほとんど同じですが、これも大文字を変更するために[A-z]として変更できます。 – dheeraj

0
tup = re.sub(r"\b\w+/(\w+)\b", r"\1", s) 

は、 "/" i "は単語文字" を意味+ W \しているのいずれかの側に、Bの意味は "単語の境界を" \ています。右側では、それらを括弧内にグループ化してグループ化します。

第2の表現r "\ 1"は、 "最初のグループ"はかっこで物事を取得します。