これは正しい単語なのかどうかわかりませんが、数学的表現から係数と指数を抽出できる正規表現を考え出しています。式は 'axB + cxD + exF'という形式で表示されます。ここで、小文字は係数で、大文字は指数です。私はそれらの両方に一致する正規表現を持っていますが、私は2つの正規表現を使用することができますか、私は係数と一致するために1つと指数のために1つを疑問に思っています。手紙にマッチすることなく数字をその片面の手紙と一致させる方法はありますか? EG、 '3x3 + 6x2 + 2x1 + 8x0'で取得する必要があります ['3'、 '6'、 '2'、 '8'] と ['3'、 '2'、 '1' '0']Pythonの正規表現 - 条件付き一致?
0
A
答えて
5
positive look-aheadを使用して、他のものと一致するものを指定することができます。係数を一致させるには、使用することができます:
>>> s = '3x3+6x2+2x1+8x0'
>>> re.findall(r'\d+(?=x)', s)
['3', '6', '2', '8']
re
モジュールのドキュメントから:(?= ...)次の一致しますが、ない...場合
マッチ文字列のいずれかを消費する。 これはルックアヘッドアサーションと呼ばれます。 たとえば、Isaac(?= Asimov)は と一致します。「Isaac」は、「Asimov」によって に続いている場合のみ一致します。指数については
、あなたの代わりにpositive look-behindを使用することができます。
>>> s = '3x3+6x2+2x1+8x0'
>>> re.findall(r'(?<=x)\d+', s)
['3', '2', '1', '0']
を再度、ドキュメントから:
は(?< = ...)と一致した場合の現在の位置文字列の前には、現在の位置で終了する ...の一致があります。 これはポジティブなlookbehind アサーションと呼ばれます。 (?< = abc)defはabcdefで の一致を検出します。lookbehind は3文字をバックアップし、含まれるパターンが一致するかどうかを確認するためです。
+0
いい仕事です。私は肯定的なルックアヘッド/ルックバックのより良い説明を読んだことを思い出すことはできません。 – bernie
1
>>> import re
>>> equation = '3x3+6x2+2x1+8x0'
>>> re.findall(r'x([0-9]+)', equation)
['3', '2', '1', '0']
>>> re.findall(r'([0-9]+)x', equation)
['3', '6', '2', '8']
1
正規表現せずにそれを行うにはさらに別の方法、:
>>> eq = '3x3+6x2+2x1+8x0'
>>> op = eq.split('+')
['3x3', '6x2', '2x1', '8x0']
>>> [o.split('x')[0] for o in op]
['3', '6', '2', '8']
>>> [o.split('x')[1] for o in op]
['3', '2', '1', '0']
関連する問題
- 1. 条件付き正規表現Python
- 2. 条件付きのPython正規表現のストライピング句読点
- 3. if条件付きの正規表現とthen条件else
- 4. 条件付き正規表現で行が複数一致する
- 5. "または"条件付きのPython正規表現
- 6. これらの条件に一致する正規表現
- 7. 文中の複数条件に一致する正規表現
- 8. 正規表現で複数のOR条件が一致する
- 9. 一致条件の最後から一致する正規表現
- 10. 条件付きの単一のJava正規表現で置き換えます
- 11. 正規表現の条件の一部に一致する(3のうち3)
- 12. 正規表現が一致しない場合のPerl正規表現のヒット条件
- 13. Cでの条件付き正規表現の問題
- 14. 条件付きのJavaScriptの正規表現
- 15. 条件付き正規表現powershellの検索と置換
- 16. 複数の条件付き正規表現
- 17. 条件付き正規表現の解析
- 18. または条件付きの正規表現
- 19. 正規表現テンプレートの条件付き終了
- 20. 正規表現一致
- 21. 正規表現一致%\%
- 22. Perl Regex - 条件付き正規表現を印刷します
- 23. 条件付きif文awk Unixで正規表現
- 24. loadCSV正規表現による条件付き処理(Syntaxproblem)
- 25. Javascript条件付き正規表現if-then-else
- 26. 正規表現を使用して条件付き置換
- 27. 正規表現以外の日付と一致する正規表現
- 28. Go正規表現の名前付き一致の使用
- 29. 正規表現での正規表現の一致値
- 30. 正規表現のディレクトリパスに一致する正規表現
はあなたが必要としないでください(+ - )? –
私は係数に符号を追加しました。+がある場合は無視し、その隣の係数は正のままです。 〜がある場合、\ dの直前に - を追加するだけでそれを拾いますが、うまくいきます。 –