পিসিআরই, 21 20 15 19 বাইট
(.|^)"\K(\\.|[^"])*
এখানে চেষ্টা করুন।
এটি দ্বিগুণ উদ্ধৃতি শুরুর আগে একটি অক্ষরের (বা ইনপুটটির শুরু) সাথে মেলে এবং তারপরে ম্যাচটি পুনরায় সেট করুন, যাতে ডাবল উদ্ধৃতিটি অন্য কোনও ম্যাচের সাথে ভাগ করা যায় না তা নিশ্চিত করে।
পিসিআরই, 25 23 বাইট
2 বাইট বন্ধ করে গল্ফ করার জন্য মার্টিন বাটনারকে ধন্যবাদ।
(\\.|[^"])*+(?!"(?R)|$)
এখানে চেষ্টা করুন।
ব্যাখ্যা
(
\\.|[^"] # An escaped character, or a character that isn't a double quote
)*+ # Possessive zero-or-more quantifier, which means backtracking
# could not happen after first match is found. That means if \\.
# matched, it would never switch to [^"], because it is always a
# match if it just stopped after the \\. without backtracking.
(?!"(?R)|$) # Make sure it is not followed by a double quote and another
# match, or the end of the input.
মনে রাখবেন যে অধিকারী কোয়ান্টিফায়ার ( *+
) নিশ্চিত করেছে যে নেতিবাচক চেহারাটি সর্বদা একটি পুরো স্ট্রিং বা অ-স্ট্রিংয়ের পুরো বিভাগের পরে শুরু হয়।
এখানে 4 টি মামলা রয়েছে:
- ম্যাচটি স্ট্রিংয়ের বাইরে যে কোনও জায়গায় শুরু হয়।
\\.
স্পষ্টতা অনুসারে কখনও একটি ডাবল উদ্ধৃতি মেলে না। এটি কেবলমাত্র পরবর্তী ডাবল উদ্ধৃতি থেকে শুরু হতে পারে যা স্ট্রিং শুরু হয় বা ইনপুটটির শেষ হয়। উভয় ক্ষেত্রেই নেতিবাচক চেহারা ব্যর্থ হয়।
- ম্যাচটি শুরু হয় স্ট্রিংয়ের শুরুতে।
(\\.|[^"])*+
একটি সম্পূর্ণ স্ট্রিং মেলে। পরবর্তী অক্ষরটি অবশ্যই একটি দ্বৈত উদ্ধৃতি হতে হবে এবং ইনপুটটির শেষ হতে পারে না। ডাবল উদ্ধৃতির পরে এটি স্ট্রিংয়ের বাইরে, সুতরাং এটি আর কোনও মিল হতে পারে না। সুতরাং এটি নেতিবাচক বর্ণনহীন পাস।
- ম্যাচটি একটি স্ট্রিং শেষে শুরু হয়। এটি আগের কেসের মতো একইভাবে একটি খালি স্ট্রিংয়ের সাথে মেলে। তবে স্পষ্টতা অনুসারে এটি কোনও বিষয় নয়।
- ম্যাচটি শুরু হয় একটি স্ট্রিংয়ের মাঝামাঝি সময়ে। অসম্ভব কারণ ম্যাচগুলি ওভারল্যাপ হয় না।
\
একটি স্ট্রিং আগে হবে ? উদাহরণস্বরূপabc\"def"
।