文字列を部分文字列と照合するための正規表現

トビアス

動的パターンを指定して部分文字列を置き換える正規表現ソリューションを探しています。問題は、部分文字列に既知のトークンが含まれている可能性があり、このトークンがどの位置で発生するかがわからないことです。問題は次のように定式化できます。(既知の)トークンが競合する場合でも、文字列内の(指定された)パターンを置き換えます。

my_stringがあるとしましょう

私は緑とPLUSの青豆が好きです!

PLUSは、一致を妨げる場合に無視したい既知のトークンを表します。

my_patternという変数パターンもあります。これは、次のようなPLUS以外my_stringの任意の部分にすることができます

1)緑と青

2)緑豆と青豆

3)私は緑が好きです

私たちは知っていPLUS内のどこかで発生する可能性がありmy_stringを、我々は位置を知りません。理論的には、my_string次のようにもなります。

I PLUS緑、青の豆のような!

以来my_patternは、2)又は3))形態1で発生することができ、我々はまた、論理和を用いて溶液をハードコーディングすることができません。

求められる解決策は次のようなものです。my_string.replace(my_pattern、 "red")とmy_patternの出力:

1)小豆が好き!

2)私は赤が好きです!

3)赤豆プラス青豆!

PLUSmy_stringで発生しますがmy_patternと競合する可能性があります)my_patternは一致しますこれは次のようなものです。my_pattern一致さ、一致を妨げる場合はPLUSを無視します。

SpghttCd

トークンの正規表現がすべての文字の間に追加されるようにパターンを変更できます。
明示的に説明しなかったことは、トークンは文字列にもスペースを追加するため、トークン正規表現は左右のスペースも検索する必要があるということです。

import re
token = 'PLUS'
patterns = ['green and blue', 'green and blue beans', 'I like green']

ptn_pls = [f'( ?{token} ?)?'.join(p) for p in patterns]

3つの異なる文字列に適用されます。

my_string = 'I like green and PLUS blue beans!'
for p in ptn_pls:
    print(re.sub(p, 'red', my_string))
# I like red beans!
# I like red!                                                 
# red and PLUS blue beans!

my_string = 'I PLUS like green and blue beans!'
for p in ptn_pls:
    print(re.sub(p, 'red', my_string))
# I PLUS like red beans!                                      
# I PLUS like red!                                            
# red and blue beans!  

my_string = 'I like grPLUSeen a PLUSnd blue beans!'
for p in ptn_pls:
    print(re.sub(p, 'red', my_string))
# I like red beans!                                          
# I like red!                                                 
# red a PLUSnd blue beans!     

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列の特定の部分文字列を照合するための正規表現

分類Dev

2つの部分文字列間で任意の数の要素を照合するためのPython正規表現?

分類Dev

繰り返し部分文字列を照合するための単一のjs正規表現?

分類Dev

部分文字列を検索するための正規表現

分類Dev

部分文字列を選択するための正規表現

分類Dev

MongoDB文字列を照合するための正規表現

分類Dev

文字列を照合するための正規表現

分類Dev

HTML文字列を照合するための正規表現

分類Dev

文字列から部分文字列を取得するための正規表現

分類Dev

数値と文字列を照合するための正規表現

分類Dev

2つの文字列間の部分文字列を照合するJavascript正規表現。ただし、部分文字列にはDOT(。)を含めることができます。

分類Dev

2つの文字列間の部分文字列を照合するJavascript正規表現。ただし、部分文字列にはDOT(。)を含めることができます。

分類Dev

他の部分文字列が存在するため、Perl正規表現は部分文字列を抽出します

分類Dev

部分文字列で正規表現を照合し、特定の区切り文字の間で文字列を返す

分類Dev

部分文字列間の値を取得するための正規表現

分類Dev

{}間の部分文字列を取得するための正規表現

分類Dev

grepを使用して2列目と5列目の文字列を照合するための正規表現

分類Dev

stringr:同じ部分文字列を含む文字列(一意の部分文字列を含む)を照合して抽出する正規表現

分類Dev

文字列(英数字)をPythonのすべての一意の文字と照合するための正規表現

分類Dev

文字列内の数値の小数部分を照合して変更するためのSwift正規表現

分類Dev

年の前に文字列を照合するための正規表現1

分類Dev

文字列の計算を照合するための正規表現

分類Dev

Pythonの複数行の文字列をエスケープ文字と照合するための正規表現

分類Dev

特定の部分文字列ではないものと照合する正規表現

分類Dev

1年前に文字列を照合するための正規表現

分類Dev

空の文字列を正規表現と照合する

分類Dev

部分文字列の場合に重複一致を除外するための正規表現

分類Dev

正規表現を使用してLaravelルートの部分文字列を照合する

分類Dev

文字列内の2つの同じ文字の最初の文字のみを照合するための正規表現

Related 関連記事

  1. 1

    文字列の特定の部分文字列を照合するための正規表現

  2. 2

    2つの部分文字列間で任意の数の要素を照合するためのPython正規表現?

  3. 3

    繰り返し部分文字列を照合するための単一のjs正規表現?

  4. 4

    部分文字列を検索するための正規表現

  5. 5

    部分文字列を選択するための正規表現

  6. 6

    MongoDB文字列を照合するための正規表現

  7. 7

    文字列を照合するための正規表現

  8. 8

    HTML文字列を照合するための正規表現

  9. 9

    文字列から部分文字列を取得するための正規表現

  10. 10

    数値と文字列を照合するための正規表現

  11. 11

    2つの文字列間の部分文字列を照合するJavascript正規表現。ただし、部分文字列にはDOT(。)を含めることができます。

  12. 12

    2つの文字列間の部分文字列を照合するJavascript正規表現。ただし、部分文字列にはDOT(。)を含めることができます。

  13. 13

    他の部分文字列が存在するため、Perl正規表現は部分文字列を抽出します

  14. 14

    部分文字列で正規表現を照合し、特定の区切り文字の間で文字列を返す

  15. 15

    部分文字列間の値を取得するための正規表現

  16. 16

    {}間の部分文字列を取得するための正規表現

  17. 17

    grepを使用して2列目と5列目の文字列を照合するための正規表現

  18. 18

    stringr:同じ部分文字列を含む文字列(一意の部分文字列を含む)を照合して抽出する正規表現

  19. 19

    文字列(英数字)をPythonのすべての一意の文字と照合するための正規表現

  20. 20

    文字列内の数値の小数部分を照合して変更するためのSwift正規表現

  21. 21

    年の前に文字列を照合するための正規表現1

  22. 22

    文字列の計算を照合するための正規表現

  23. 23

    Pythonの複数行の文字列をエスケープ文字と照合するための正規表現

  24. 24

    特定の部分文字列ではないものと照合する正規表現

  25. 25

    1年前に文字列を照合するための正規表現

  26. 26

    空の文字列を正規表現と照合する

  27. 27

    部分文字列の場合に重複一致を除外するための正規表現

  28. 28

    正規表現を使用してLaravelルートの部分文字列を照合する

  29. 29

    文字列内の2つの同じ文字の最初の文字のみを照合するための正規表現

ホットタグ

アーカイブ