import re
texts = ['でレンタル HD(高画質) ¥ 500',
'で購入 HD(高画質) ¥ 2,500',
'Buy SD £5.99',
'Buy SD £14.99',
'HD ausleihen EUR 3,99',
'HD kaufen EUR 11,99',
'Buy Movie HD $19.99',
'$1,200.84'
]
curword = r'(?:USD|GBP|EUR|JPY|CHF|SEK|DKK|NOK|SGD|HKD|AUD|TWD|NZD|CNY|KRW|INR|CAD|VEF|EGP|THB|IDR|PKR|MYR|PHP|MXN|VND|CZK|HUF|PLN|TRY|ZAR|ILS|ARS|CLP|BRL|RUB|QAR|AED|COP|PEN|CNH|KWD|SAR)'
cursymbol = r'[$\u00A2-\u00A5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20C0\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6\U00011FDD-\U00011FE0\U0001E2FF\U0001ECB0]'
num = r'\d+(?:[.,]\d+)*'
pattern = re.compile(fr'(?:\b{curword}|{cursymbol})\s*({num})|({num})\s*(?:{curword}\b|{cursymbol})')
print(fr'(?:\b{curword}|{cursymbol})\s*({num})|({num})\s*(?:{curword}\b|{cursymbol})')
for text in texts:
m = pattern.search(text)
if m:
result = m.group(1) or m.group(2)
print(result)
aW1wb3J0IHJlCnRleHRzID0gWyfjgafjg6zjg7Pjgr/jg6sgSEQo6auY55S76LOqKSDvv6UgNTAwJywKCSfjgafos7zlhaXjgIDjgIBIRCjpq5jnlLvos6opIO+/pSAyLDUwMCcsCgknQnV5IFNEIMKjNS45OScsCgknQnV5IFNEIMKjMTQuOTknLAoJJ0hEIGF1c2xlaWhlbiBFVVIgMyw5OScsCgknSEQga2F1ZmVuIEVVUiAxMSw5OScsCgknQnV5IE1vdmllIEhEICQxOS45OScsCgknJDEsMjAwLjg0JwpdCmN1cndvcmQgPSByJyg/OlVTRHxHQlB8RVVSfEpQWXxDSEZ8U0VLfERLS3xOT0t8U0dEfEhLRHxBVUR8VFdEfE5aRHxDTll8S1JXfElOUnxDQUR8VkVGfEVHUHxUSEJ8SURSfFBLUnxNWVJ8UEhQfE1YTnxWTkR8Q1pLfEhVRnxQTE58VFJZfFpBUnxJTFN8QVJTfENMUHxCUkx8UlVCfFFBUnxBRUR8Q09QfFBFTnxDTkh8S1dEfFNBUiknCmN1cnN5bWJvbCA9IHInWyRcdTAwQTItXHUwMEE1XHUwNThGXHUwNjBCXHUwN0ZFXHUwN0ZGXHUwOUYyXHUwOUYzXHUwOUZCXHUwQUYxXHUwQkY5XHUwRTNGXHUxN0RCXHUyMEEwLVx1MjBDMFx1QTgzOFx1RkRGQ1x1RkU2OVx1RkYwNFx1RkZFMFx1RkZFMVx1RkZFNVx1RkZFNlxVMDAwMTFGREQtXFUwMDAxMUZFMFxVMDAwMUUyRkZcVTAwMDFFQ0IwXScKbnVtID0gcidcZCsoPzpbLixdXGQrKSonCnBhdHRlcm4gPSByZS5jb21waWxlKGZyJyg/Olxie2N1cndvcmR9fHtjdXJzeW1ib2x9KVxzKih7bnVtfSl8KHtudW19KVxzKig/OntjdXJ3b3JkfVxifHtjdXJzeW1ib2x9KScpCnByaW50KGZyJyg/Olxie2N1cndvcmR9fHtjdXJzeW1ib2x9KVxzKih7bnVtfSl8KHtudW19KVxzKig/OntjdXJ3b3JkfVxifHtjdXJzeW1ib2x9KScpCgpmb3IgdGV4dCBpbiB0ZXh0czoKCW0gPSBwYXR0ZXJuLnNlYXJjaCh0ZXh0KQoJaWYgbToKCQlyZXN1bHQgPSBtLmdyb3VwKDEpIG9yIG0uZ3JvdXAoMikKCQlwcmludChyZXN1bHQp
(?:\b(?:USD|GBP|EUR|JPY|CHF|SEK|DKK|NOK|SGD|HKD|AUD|TWD|NZD|CNY|KRW|INR|CAD|VEF|EGP|THB|IDR|PKR|MYR|PHP|MXN|VND|CZK|HUF|PLN|TRY|ZAR|ILS|ARS|CLP|BRL|RUB|QAR|AED|COP|PEN|CNH|KWD|SAR)|[$\u00A2-\u00A5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20C0\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6\U00011FDD-\U00011FE0\U0001E2FF\U0001ECB0])\s*(\d+(?:[.,]\d+)*)|(\d+(?:[.,]\d+)*)\s*(?:(?:USD|GBP|EUR|JPY|CHF|SEK|DKK|NOK|SGD|HKD|AUD|TWD|NZD|CNY|KRW|INR|CAD|VEF|EGP|THB|IDR|PKR|MYR|PHP|MXN|VND|CZK|HUF|PLN|TRY|ZAR|ILS|ARS|CLP|BRL|RUB|QAR|AED|COP|PEN|CNH|KWD|SAR)\b|[$\u00A2-\u00A5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20C0\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6\U00011FDD-\U00011FE0\U0001E2FF\U0001ECB0])
500
2,500
5.99
14.99
3,99
11,99
19.99
1,200.84