私はPython(3)を使用していますが、文字列の始めに一致する正規表現が必要です。可変長のため、RegEx look-behind '(?<= n | A)'が機能しません
複数の行を同時に処理する必要があるため、re.DOTALL
フラグを追加する必要があります。ここの例は単純化されています。私が思い付いた何
(?<=\n|\A)start of line
私はそれをそれが動作on regex101.comをテストしたが、私はPython 3.5のコンソールでそれを実行すると、このエラートレースバックにつながる:
$ python3
Python 3.5.1+ (default, Mar 30 2016, 22:46:26)
[GCC 5.3.1 20160330] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.search(r'(?<=\n|\A)start of line', 'just any text to test', re.DOTALL)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/re.py", line 173, in search
return _compile(pattern, flags).search(string)
File "/usr/lib/python3.5/re.py", line 293, in _compile
p = sre_compile.compile(pattern, flags)
File "/usr/lib/python3.5/sre_compile.py", line 540, in compile
code = _code(p, flags)
File "/usr/lib/python3.5/sre_compile.py", line 525, in _code
_compile(code, p.data, flags)
File "/usr/lib/python3.5/sre_compile.py", line 158, in _compile
raise error("look-behind requires fixed-width pattern")
sre_constants.error: look-behind requires fixed-width pattern
>>>
何代わりにこの制限を克服するために使用できますか?
're.DOTALL'を使用しても、あなたは' re.MULTILINE'を使用できません。これでは '^ pattern'だけです。 –
ただfyi。長さがゼロの '\ A'のためにlookbehindを使う必要はありません。 '(?<= \ n | \ A)'(https://regex101.com/r/zN5qN3/1)を '(?<= \ n | \ A)しかし、 '^'を使用した複数行の回答は適切です。 –