0

まず第一に、私は正規表現を書いている人ではないので、それらを単に書き直すことはできません。私はいくつかのJavascript正規表現を取り込んで、それらを解析しようとしていますが、それらの間にはいくつかの違いがあるようです。W3Schoolsで正規表現の例をテストすると、Javascriptは次のことを示しています。

var str="Visit W3Schools";
var patt1=/w3schools/i;
alert(str.match(patt1))

「W3Schools」に警告します。ただし、Pythonでは、次のようになります。

import re
str="Visit W3Schools"
patt1=re.compile(r"/w3schools/i")
print patt1.match(str)

印刷しNoneます。Javascript regexpsをPythonのものに変換するために使用できるライブラリはありますか?

4

3 に答える 3

3

Pythonでは、文字列の先頭で.matchのみ一致します。

代わりに使用したいのは is です.search

さらに、「/」文字を含める必要はなく、別の引数を使用して再コンパイルし、検索で大文字と小文字を区別しないようにする必要があります。

>>> import re
>>> str = "Visit W3Schools"
>>> patt1 = re.compile('w3schools', re.I)
>>> print patt1.search(str)
<_sre.SRE_Match object at 0x10088e1d0>

JavaScript では、スラッシュは の呼び出しに相当しre.compileます。

python 正規表現モジュールを読むことをお勧めします。優れたHOWTOもあります。

于 2012-06-27T16:22:34.560 に答える
1

/ig も機能するように、小さなヘルパー関数を作成できます。

def js_to_py_re(rx):
    query, params = rx[1:].rsplit('/', 1)
    if 'g' in params:
        obj = re.findall
    else:
        obj = re.search

    # May need to make flags= smarter, but just an example...    
    return lambda L: obj(query, L, flags=re.I if 'i' in params else 0)

print js_to_py_re('/o/i')('school')
# <_sre.SRE_Match object at 0x2d8fe68>

print js_to_py_re('/O/ig')('school')
# ['o', 'o']

print js_to_py_re('/O/g')('school')
# []
于 2012-06-27T17:00:57.777 に答える
1

You don't want to include the / characters and flags in the regexp, and you should use .search instead of .match for a substring match.

Try:

patt1 = re.compile(r"w3schools", flags=re.IGNORECASE)
srch = patt1.search(str)
print srch.group()
于 2012-06-27T16:24:08.307 に答える