পাইথন রি.সুব গ্রুপ: after সংখ্যার পরে সংখ্যা


183

আমি এর foobarসাথে কীভাবে প্রতিস্থাপন করতে পারি foo123bar?

এটি কাজ করে না:

>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'

এইটা কাজ করে:

>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'

আমার মনে হয় এরকম কিছু থাকার পরে এটি একটি সাধারণ সমস্যা \number। কেউ কীভাবে আমাকে এটি পরিচালনা করতে পারে তার ইঙ্গিত দিতে পারে?


2
এই প্রশ্নটি "গোষ্ঠীগুলি" এর অধীনে স্ট্যাক ওভারফ্লো নিয়মিত এক্সপ্রেশন FAQ এ যুক্ত করা হয়েছে ।
aliteralmind 0

1
এই প্রশ্নটি আমাকে খুঁজে পেতে বেশ দীর্ঘ সময় নিয়েছে, কারণ এটি 'ক্যাপচার গ্রুপ' বা 'সংখ্যাযুক্ত গ্রুপ রেফারেন্স' পদটি বৈশিষ্ট্যযুক্ত করে না, তবে আমি অবশেষে এখানে আছি এবং আপনি এটি জিজ্ঞাসা করে খুশি হয়েছেন।
চিহ্ন

1
তোমার সমস্যাটি হল এই যে দ '\ 112' অকট্যাল আক্ষরিক 0112, ASCII'J হিসেবে ব্যাখ্যা করা হচ্ছে \ 1 '', বা দশমিক 74. কিভাবে backreference বলপূর্বক দেখতে পারি না 'STRING সংযুক্তকরণের বা তার পূর্বের মূল্যায়ন পেতে হয়''.join()
smci

প্রশ্ন থেকে একটি ছোট বিচ্যুতি, সমস্ত গ্রুপ ম্যাচ রেফার করার কোনও উপায় যেমন r '\ <সমস্ত ম্যাচের জন্য> হাই'?
সায়ান দে

উত্তর:


312

উত্তরটা হচ্ছে:

re.sub(r'(foo)', r'\g<1>123', 'foobar')

ডক্স থেকে প্রাসঙ্গিক অংশ:

চরিত্রের পলায়ন এবং উপরে বর্ণিত ব্যাক রেফারেন্স ছাড়াও,? G নামের নামের সাথে মিলিত স্ট্রিং ব্যবহার করবে ((পি ...) সিনট্যাক্স দ্বারা সংজ্ঞায়িত হিসাবে? \ g সংশ্লিষ্ট গ্রুপ নম্বর ব্যবহার করে; \ g <2> সুতরাং \ 2 এর সমতুল্য, তবে প্রতিস্থাপন যেমন amb g <2> 0 তে অস্পষ্ট নয়। \ 20 টি গোষ্ঠী 20 এর রেফারেন্স হিসাবে ব্যাখ্যা করা হবে, আক্ষরিক অক্ষর '0' এর পরে গোষ্ঠী 2 এর কোনও রেফারেন্স নয়। পশ্চাদপসরণ \ g <0> পুরো আর স্ট্রিংয়ের বিকল্পগুলি আরআর দ্বারা মিলিত।


48
নিজেকে নিয়ে এত কষ্ট করবেন না। এটা ডকুমেন্টেশন মগ্ন এতদূর গভীর এটি অধিকাংশ লোক ডক্স পড়তে অনেক বেশী সময় লাগতে চেয়ে তাদের প্রশ্ন google এবং এই উত্তর তাই আসা পর্যন্ত আছে হবে।
স্পিড প্লেন

1
প্রদত্ত সঠিক উক্তিটি এখানে আপনি
সন্ধানের

আমি কি গ্রুপটি নিয়ে এটিকে সংশোধন করতে পারি? \ g <1> ... উদাহরণস্বরূপ, এই ক্ষেত্রে g <1> foo, তবে আমি আপনাকে "ওফ" এর মতো ও দ্বারা পরিবর্তন করতে চাই
এরিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.