html - এক্সএইচএইচএম স্বনির্ধারিত ট্যাগ বাদে RegEx খোলা ট্যাগগুলি মিলছে




xhtml (20)

আমি এই সব খোলা ট্যাগ মেলে প্রয়োজন:

<p>
<a href="foo">

কিন্তু এইগুলি নয়:

<br />
<hr class="foo" />

আমি এই সঙ্গে এসেছিলেন এবং আমি এটা অধিকার পেয়েছিলাম নিশ্চিত করতে চেয়েছিলেন। আমি শুধু az capturing করছি।

<([a-z]+) *[^/]*?>

আমি বিশ্বাস করি এটা বলে:

  • তারপর কম, একটি খুঁজুন
  • তারপর (এবং ক্যাপচার) AZ এক বা একাধিক বার খুঁজুন
  • শূন্য বা আরো স্পেস, তারপর
  • কোন অক্ষর শূন্য বা আরো বার, লোভী, ছাড়া / তারপর, খুঁজে বের করুন
  • একটি বৃহত্তর তুলনা করুন

আমার কি ঠিক আছে? এবং আরো গুরুত্বপূর্ণ, আপনি কি মনে করেন?


আপনি রেজেক্স সহ [এক্স] এইচটিএমএল পার্স করতে পারবেন না। কারণ এইচটিএমএল regex দ্বারা পার্স করা যাবে না। Regex এমন একটি সরঞ্জাম নয় যা সঠিকভাবে HTML বিশ্লেষণ করতে ব্যবহার করা যেতে পারে। আমি এইচটিএমএল-এবং-রেজেক্স প্রশ্নের উত্তর হিসাবে অনেক আগে এখানে উত্তর দিয়েছি, রেজেক্স ব্যবহার আপনাকে এইচটিএমএল ব্যবহার করতে দেয় না। নিয়মিত এক্সপ্রেশনগুলি এমন একটি হাতিয়ার যা হ'ল এইচটিএমএল দ্বারা নিযুক্ত নকশার বুঝতে অপ্রত্যাশিতভাবে পরিশীলিত। এইচটিএমএল একটি নিয়মিত ভাষা এবং তাই নিয়মিত এক্সপ্রেশন দ্বারা পার্স করা যাবে না। Regex প্রশ্ন তার অর্থপূর্ণ অংশে এইচটিএমএল ভাঙ্গা সজ্জিত করা হয় না। অনেক বার কিন্তু এটা আমার পাচ্ছেন না। পার্ল দ্বারা ব্যবহৃত হিসাবে এমনকি বর্ধিত অনিয়মিত নিয়মিত এক্সপ্রেশন এইচটিএমএল আলাদা করার কাজ পর্যন্ত হয় না। আপনি আমাকে ক্র্যাক করতে হবে না। এইচটিএমএল যথেষ্ট জটিলতার একটি ভাষা যা এটি নিয়মিত এক্সপ্রেশন দ্বারা পার্স করা যাবে না। এমনকি জন স্কিট নিয়মিত এক্সপ্রেশন ব্যবহার করে এইচটিএমএল পার্স করতে পারবেন না। প্রতিবার যখন আপনি নিয়মিত এক্সপ্রেশন দিয়ে এইচটিএমএল প্যারিস করার চেষ্টা করেন, তখন অশুভ শিশু কুমারীদের রক্ত ​​কাঁদবে এবং রাশিয়ান হ্যাকাররা আপনার ওয়েবপ্যাডটি টানবে। Regex সংকলনের সাথে এইচটিএমএল pararsing সমৃদ্ধ আত্মা tumed জীবিত অঞ্চলে। এইচটিএমএল এবং regex প্রেম, বিবাহ, এবং প্রথাগত infantide মত একসঙ্গে যেতে। <Center> খুব দেরী ধরে রাখতে পারে না। একই ধারণাগত স্থানটিতে একসঙ্গে রেজেক এবং এইচটিএমএল-এর শক্তি আপনার মনকে এত বেশি পানিযুক্ত পুষ্টির মতো ধ্বংস করবে। আপনি যদি রেজেক্টের সাথে এইচটিএমএল প্যারাস করেন তবে আপনি তাদের এবং তাদের নিন্দিত উপায়ে যা প্রদান করছেন তা আমাদেরকে অমানবিক কাজ করে, যার নাম বেসিক বহুভাষিক প্লেনে প্রকাশ করা যায় না সেটির জন্য আমরা সবাইকে ধ্বংস করে দিই। এইচটিএমএল-প্লাস-রেজেক্প আপনি যখন পর্যবেক্ষণ করেন, তখন আপনার ভীষণ ভয়ঙ্কর আক্রমণের ভেতরে ভেসে যাওয়া সংবেদনশীল ব্যক্তির এন ভিভিকে তরল করে তুলবে। Regexx- ভিত্তিক এইচটিএমএল পার্সারগুলি হ'ল ক্যান্সার যা স্ট্যাকঅভারফ্লোকে হত্যা করছে, এটি খুব দেরী হয়ে গেছে এটি খুব দেরি হয়ে গেছে আমরা একটি চিল্ডের ট্র্যাজেডেশন সংরক্ষণ করতে পারছি না নিশ্চিত করে যে রেজেক্স সব জীবন্ত টিস্যু (এইচটিএমএল ব্যতীত যা আগের মতো ভবিষ্যদ্বাণী করা যাবে না) ব্যতীত। এইচটিএমএল প্যারাস করার জন্য রেজেক্স ব্যবহার করে যে কেউ এই বেদনাটি বেঁচে থাকতে পারে কিভাবে এইচটিএমএল প্রক্রিয়াকরণের হাতিয়ার হিসাবে রিজ এক্স ব্যবহার করে ভয়ঙ্কর নির্যাতন এবং নিরাপত্তা গর্তের অনন্তকালের মানবতা ধ্বংস করে দিয়েছে এবং এই বিশ্ব এবং কয়টি বিভক্ত সংস্থার ভয়ঙ্কর সংস্থার (যেমন এসজিএমএল সংস্থাগুলি, কিন্তু আরও দূষিত) এইচটিএমএল এর জন্য প্রাক্তন এক্স প্যাসারদের বিশ্বের একটি গ্ল্যাম সেগুলিই তত্পরভাবে এপি প্রোগ্রামারের চেতনাটি প্রেরণ করবে, আমি অরাজক চিত্কারের অজস্র ঘনত্বের সাথে ট্রান্সফার করবো , সে আসবে , মহামারী স্রষ্টা সংক্রামক সংক্রমণ-সংক্রমণ ভিসুয়াল বেসিক মত সব সময় শুধুমাত্র খারাপ সে আসে সে কম স্প্যানিশ ভাষায় GHT জ ই আসে Fi নি তার জন্য আপনার এইচ টি এম এল পার্সার, অ্যাপ্লিকেশন এবং অস্তিত্ব গ্রাস, HI গুলি অপবিত্র ভা ডি সব enli̍ stro҉ying ̈Ghtenment, এইচটিএমএল ট্যাগ লিক fr̶ǫm yo উর চোখের মত liq ইউআইডি পি ঐন, নিয়মিত মেপুঃ পুনরায় ssion পার্সিং গান SP থেকে mor লেহন তাল মানুষের কণ্ঠ nguish exti হবে এখানে দেখতে পাচ্ছি এটা আপনি দেখতে পারেন এটা এটা খুবই সুন্দর যে সে inal snuf মিথ্যা কথা inal snuf মিথ্যা বলে মনে করে। সে সব লোককে এলএলএল এসএল ওএসএসএইচ ও পোনি হেই এস সে হ'ল সিওএম এস সে হ'ল আমার সাথে যোগাযোগ করে অথবা আমার ফ্যাক্স ই আমার মুখ এই ঈশ্বর না না ওহ না ও ও ও ওকে থামাও না * Θ ̅ͫ͏̙̤ ͇̫͛͆̾ͫ̑͆ ͎a̧͈͖r̽̾̈́͒͑e ͇̫͛͆̾ͫ̑͆ ͇̫͛͆̾ͫ̑͆ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̧͈͖ ̡͊͠͝ ̡͊͠͝ ̘̝̙ͤ̾̆ ̘̝̙ͤ̾̆ ̘̝̙ͤ̾̆ ͇̹̺Ɲ̴ȳ̳ ͇̹̺Ɲ̴ȳ̳ ̸̡̪̯ͨ͊̽̅̾Ȩ̬̩̾͛ͪ̈͘ ̶̧̨̹̭̯ͧ̾ͬ ̶̧̨̹̭̯ͧ̾ͬ ̶̧̨̹̭̯ͧ̾ͬ ̶̧̨̹̭̯ͧ̾ͬ ̶̧̨̹̭̯ͧ̾ͬ ̶̧̨̹̭̯ͧ̾ͬ

পরিবর্তে আপনি একটি এক্সএমএল প্যাসারার ব্যবহার করে চেষ্টা করেছেন?

মডারেটর এর নোট

এই পোস্টটি তার সামগ্রীতে অনুপযুক্ত সম্পাদনাগুলি আটকাতে লক করা আছে। পোস্ট দেখতে ঠিক বলে মনে হচ্ছে - এটির সামগ্রীতে কোন সমস্যা নেই। আমাদের মনোযোগ জন্য এটা পতাকা না দয়া করে।


আমি মনে করি এখানে ত্রুটিটি হল এইচটিএমএল একটি চম্পস্কি প্রকার 2 ব্যাকরণ (প্রসঙ্গ বিনামূল্যে ব্যাকরণ) এবং রেজেক্স একটি চম্পস্কি প্রকার 3 ব্যাকরণ (নিয়মিত ব্যাকরণ) । টাইপ 2 ব্যাকরণ মূলত একটি টাইপ 3 ব্যাকরণের চেয়ে আরও জটিল ( চম্পস্কি শ্রেণীক্রম দেখুন ), এটি রেজেক্সের সাথে এক্সএমএলকে বিশ্লেষণ করতে গাণিতিকভাবে অসম্ভব

কিন্তু অনেকেই চেষ্টা করবে, কেউ সফলতা দাবি করবে - কিন্তু অন্যরাও দোষ খুঁজে পাবে না এবং সম্পূর্ণরূপে জড়িয়ে পড়বে।


এই ছেলেরা শুনতে না। আপনি ছোট টুকরা টাস্ক বিরতি যদি আপনি সম্পূর্ণরূপে regex সঙ্গে প্রসঙ্গ মুক্ত গ্রামার পার্স করতে পারেন । আপনি একটি স্ক্রিপ্টের সাথে সঠিক প্যাটার্ন তৈরি করতে পারেন যা ক্রম অনুসারে এইটি করে:

  1. হালকা সমস্যা সমাধান করুন।
  2. একটি বৃত্তাকার স্কয়ার।
  3. হে (লগ এন) বা কম ভ্রমণকারী বিক্রয় সমস্যা আউট কাজ। এর চেয়ে বেশি কিছু হলে, আপনি RAM এর বাইরে চলে যাবেন এবং ইঞ্জিনটি ফাঁস হয়ে যাবে।
  4. প্যাটার্নটি বেশ বড় হবে, তাই নিশ্চিত করুন যে আপনার অ্যালগরিদম আছে যা হ্রাসহীনভাবে র্যান্ডম ডেটা সংকুচিত করে।
  5. প্রায় সেখানে - শুধু শূন্য দ্বারা পুরো জিনিস বিভক্ত। সহজ কিছু.

আমি নিজে নিজে শেষ অংশটি শেষ করে নিই, কিন্তু আমি জানি আমি ঘনিষ্ঠ হয়ে যাচ্ছি। এটি কিছু কারণে CthulhuRlyehWgahnaglFhtagnException গুলি নিক্ষেপ করে রাখে, তাই আমি VB 6 এ এটি পোর্ট করতে এবং On Error Resume Next ব্যবহার করতে যাচ্ছি। আমি এই অদ্ভুত দরজা তদন্ত একবার একবার প্রাচীর খোলা যে কোড দিয়ে আপডেট করব। হুম।

পিএস পিয়ের ডি ফারম্যাটও এটি কীভাবে করবেন তাও বুঝিয়েছিলেন, কিন্তু সে যে মার্জিন লেখা ছিল তা কোডের জন্য যথেষ্ট ছিল না।


এমন মানুষ আছে যা আপনাকে বলে দেবে যে পৃথিবী বৃত্তাকার (অথবা সম্ভবত পৃথিবী যদি একটি অদ্ভুত গোলক হয় তবে তারা অদ্ভুত শব্দ ব্যবহার করতে চায়)। তারা মিথ্যা বলছে.

এমন লোক আছে যা আপনাকে বলবে যে নিয়মিত এক্সপ্রেশনগুলি পুনরাবৃত্তি করা উচিত নয়। তারা আপনাকে সীমিত করা হয়। তারা আপনাকে subjugate প্রয়োজন, এবং তারা অজ্ঞতা রেখে আপনি এটা করতে।

আপনি তাদের বাস্তবতা বাস করতে বা লাল পিল নিতে পারেন।

লর্ড মার্শালের মতো (তিনি কি মার্শাল নেট ক্লাসের একজন আপেক্ষিক?), আমি আন্ডারভার্স স্ট্যাক ভিত্তিক রেজেক্স - শাখাকে দেখেছি এবং ক্ষমতা জ্ঞানের সাথে ফেরত এসেছি যা আপনি কল্পনা করতে পারবেন না। হ্যাঁ, আমার মনে হয় ওল্ড ওয়ান বা দুই তাদের রক্ষা করছে, কিন্তু তারা টিভিতে ফুটবল দেখছিল, তাই এটি কঠিন ছিল না।

আমি মনে করি এক্সএমএল কেস বেশ সহজ। RegEx (.NET সিনট্যাক্সে), ডিফল্ট এবং আপনার দুর্বল মনের দ্বারা বোঝা সহজ করতে বেস64 এ কোডেড, এরকম কিছু হওয়া উচিত:

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
+r/vD34mUADO1P4/AQAA//8=

সেট অপশন অপশন RegexOptions.ExplicitCapture । আপনি যে ELEMENTNAME গ্রুপটি খুঁজছেন তা হল ELEMENTNAME । যদি ক্যাপচার গ্রুপ ERROR খালি না হয় তবে একটি পার্সিং ত্রুটি ছিল এবং Regex থামানো হয়েছে।

যদি আপনি এটি একটি মানব-পঠনযোগ্য রেজেক্সে পুনঃস্থাপন করতে সমস্যা থাকেন তবে এটি আপনাকে সাহায্য করতে হবে:

static string FromBase64(string str)
{
    byte[] byteArray = Convert.FromBase64String(str);

    using (var msIn = new MemoryStream(byteArray))
    using (var msOut = new MemoryStream()) {
        using (var ds = new DeflateStream(msIn, CompressionMode.Decompress)) {
            ds.CopyTo(msOut);
        }

        return Encoding.UTF8.GetString(msOut.ToArray());
    }
}

যদি আপনি অনিশ্চিত হন, না, আমি মজা করছি না (কিন্তু সম্ভবত আমি মিথ্যা বলছি)। এটা কাজ করবে। আমি এটি পরীক্ষা করার জন্য ইউনিট পরীক্ষার টন তৈরি করেছি, এবং আমি এমনকি কনফর্মেন্স পরীক্ষার (অংশ) ব্যবহার করেছি। এটি একটি টোকেনাইজার, সম্পূর্ণ ফুটো পসার নয়, তাই এটি কেবল এক্সএমএলটিকে তার উপাদান টোকেনগুলিতে বিভক্ত করবে। এটি DTDs বিশ্লেষণ / সংহত করা হবে না।

ওহ ... যদি আপনি রেজেক্সের উৎস কোডটি চান তবে কিছু সহায়ক পদ্ধতির সাথে:

একটি xml বা পূর্ণ প্লেইন regex টোকেনাইজ regex


শেল ইন, আপনি HTML ব্যবহার করে পার্স করতে পারেন:

সম্পর্কিত (কেন আপনি regex ম্যাচ ব্যবহার করা উচিত নয়):


Disclaimer : আপনি বিকল্প আছে একটি পসার ব্যবহার করুন। যে বলেন ...

এই regex আমি এইচটিএমএল ট্যাগ মেলে (!) ব্যবহার করে:

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>

এটি নিখুঁত হতে পারে না, তবে আমি অনেক HTML এর মাধ্যমে এই কোডটি চালাচ্ছি। মনে রাখবেন যে এটি এমনকি <a name="badgenerator""> মত অদ্ভুত জিনিসগুলিকে ধরে <a name="badgenerator""> যা ওয়েবে প্রদর্শিত হয়।

আমি এটা স্ব অন্তর্গত ট্যাগ মেলে না অনুমান, আপনি Kobi এর নেতিবাচক চেহারা পিছনে ব্যবহার করতে চান:

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+(?<!/\s*)>

অথবা শুধু যদি এবং যদি না।

Downvoters যাও: এটি একটি প্রকৃত পণ্য থেকে কাজ কোড। আমি এই পৃষ্ঠাটি পড়তে কেউ সন্দেহ যে এইচটিএমএল regexes ব্যবহার করার জন্য সামাজিকভাবে গ্রহণযোগ্য ছাপ পেতে হবে।

ক্যাভিট : আমার মনে রাখা উচিত যে এই রেজেকক্স এখনও সিডিএটিএ ব্লক, মন্তব্য, এবং স্ক্রিপ্ট এবং শৈলী উপাদানের উপস্থিতিতে ভেঙ্গে গেছে। ভাল খবর, আপনি একটি regex ব্যবহার করে যারা পরিত্রাণ পেতে পারেন ...


আপনি পিএইচপি জন্য এই প্রয়োজন হলে:

পিএইচপি করে DOM functions ঠিকমত কাজ করবে না যদি না তা সঠিকভাবে এক্সএমএল ফরম্যাট করা হয়েছে। তাদের মানবজাতির বাকি অংশের জন্য কতটা ভাল ব্যবহার করা যায়।

simplehtmldom ভাল, কিন্তু আমি এটি একটি বিট buggy খুঁজে পাওয়া যায় নি, এবং এটি বেশ মেমরি ভারী [বড় পৃষ্ঠাগুলিতে বিপর্যস্ত হবে।]

আমি QueryPath ব্যবহার করি নি , তাই এর উপযোগিতা সম্পর্কে মন্তব্য করতে পারছি না।

চেষ্টা করার জন্য আরেকটি আমার DOMParser যা সম্পদগুলিতে খুব হালকা এবং আমি কিছুক্ষন জন্য সুখীভাবে ব্যবহার করছি। শিখতে সহজ এবং শক্তিশালী।

পাইথন এবং জাভা জন্য, একই লিঙ্ক পোস্ট করা হয়েছে।

ডাউনভোটারদের জন্য - আমি কেবলমাত্র আমার ক্লাসটি লিখেছি যখন XML প্যাসার্স বাস্তব ব্যবহার প্রতিরোধ করতে ব্যর্থ হয়েছে। ধর্মীয় downvoting শুধু পোস্ট থেকে দরকারী উত্তর বাধা দেয় - দয়া করে প্রশ্ন দৃষ্টিকোণ মধ্যে জিনিস রাখা, দয়া করে।


একটি প্রাচীন চীনা কৌশলবাদী, সাধারণ, এবং দার্শনিক, সূর্য তেজু বলেছেন:

বলা হয় যে যদি আপনি আপনার শত্রুদের জানেন এবং নিজেকে জানেন, আপনি একক ক্ষতি ছাড়াই একশত যুদ্ধ জয় করতে পারেন। আপনি শুধুমাত্র নিজেকে জানেন তবে আপনার প্রতিপক্ষ নয়, আপনি জিততে পারেন বা হারাতে পারেন। যদি আপনি নিজেকে না আপনার শত্রু জানেন, আপনি সবসময় নিজেকে বিপন্ন করা হবে।

এই ক্ষেত্রে আপনার শত্রু এইচটিএমএল হয় এবং আপনি হয় নিজেকে বা regex হয়। আপনি এমনকি অনিয়মিত regex সঙ্গে পার্ল হতে পারে। এইচটিএমএল জানুন। নিজেকে জানো.

আমি এইচটিএমএল প্রকৃতি বর্ণনা একটি হাইকু রচনা করেছেন।

HTML has
complexity exceeding
regular language.

আমি পার্লের রেজেক্স প্রকৃতি বর্ণনা করে একটি হাইক রচনা করেছি।

The regex you seek
is defined within the phrase
<([a-zA-Z]+)(?:[^>]*[^/]*)?>

চেষ্টা করুন:

<([^\s]+)(\s[^>]*?)?(?<!/)>

এটি আপনার অনুরূপ, কিন্তু শেষ >অবশ্যই একটি স্ল্যাশের পরে নাও হতে পারে এবং এটিও গ্রহণ করে h1


যদিও এটি উপযুক্ত এবং নিয়মিত অভিব্যক্তিগুলি ব্যবহার করার জন্য কার্যকর নয় তবে কখনও কখনও নিয়মিত অভিব্যক্তিগুলি সাধারণ মিলের সমস্যাগুলির জন্য দ্রুত সমাধান প্রদান করে এবং আমার দৃশ্যে তা ক্ষুদ্র কাজগুলির জন্য নিয়মিত অভিব্যক্তিগুলি ব্যবহার করা ভয়ঙ্কর নয়।

স্টিভেন লেভিথান দ্বারা লিখিত অন্তর্মুখী এইচটিএমএল উপাদানগুলির সাথে মিলে যাওয়ার বিষয়ে একটি নির্দিষ্ট ব্লগ পোস্ট রয়েছে


W3C একটি ছদ্ম regexp ফর্মের মধ্যে পার্সিং ব্যাখ্যা করে:
W3C লিঙ্ক

জন্য Var লিঙ্কগুলি অনুসরণ করুন QName, Sএবং Attributeএকটা পরিষ্কার ছবি পেতে।
যে উপর ভিত্তি করে আপনি ট্যাগ stripping মত জিনিস হ্যান্ডেল একটি চমত্কার ভাল regexp তৈরি করতে পারেন।


অনেক লোক ইতোমধ্যেই উল্লেখ করেছে যে, এইচটিএমএল একটি নিয়মিত ভাষা নয় যা পার্স করা খুব কঠিন করে তুলতে পারে। এর জন্য আমার সমাধানটি একটি সুষম প্রোগ্রাম ব্যবহার করে নিয়মিত ভাষাতে পরিণত করা এবং ফলাফলগুলি উপভোগ করার জন্য একটি XML প্যাসারার ব্যবহার করা। এই জন্য ভাল বিকল্প অনেক আছে। আমার প্রোগ্রামটি jtidy লাইব্রেরির সাথে HTML ব্যবহার করে এইচটিএমএল এক্সএমএল এবং তারপর জ্যাক্সনকে xpath এ পরিণত করতে হবে।


আমি আগে HTMLParser নামে একটি ওপেন সোর্স টুল ব্যবহার করেছি । এটা বিভিন্ন উপায়ে এইচটিএমএল পার্স ডিজাইন করা হয়েছে এবং উদ্দেশ্য বেশ ভাল কাজ করে। এটি বিভিন্ন টিরিনড হিসাবে এইচটিএমএল প্যারাস করতে পারে এবং নোডের বৈশিষ্ট্যগুলি বের করতে আপনি সহজেই এটির API ব্যবহার করতে পারেন। এটি পরীক্ষা করে দেখুন এবং এটি আপনাকে সাহায্য করতে পারে কিনা তা দেখুন।


আমি এই জন্য আপনার সঠিক প্রয়োজন জানি না, কিন্তু যদি আপনি .NET ব্যবহার করছেন, আপনি এইচটিএমএল এজিটিলি প্যাক ব্যবহার করতে পারে না ?

উদ্ধৃতাংশ:

এটি একটি .নেট কোড লাইব্রেরি যা আপনাকে "ওয়েব থেকে বাইরে" HTML ফাইলগুলি বিশ্লেষণ করতে দেয়। পার্সার "বাস্তব বিশ্বের" এইচটিএমএল malformed সঙ্গে খুব সহনশীল।


আমি পিএইচপি এক্সএমএল এবং এইচটিএমএল QueryPath জন্য QueryPath ব্যবহার পরামর্শ । এটি মূলত jQuery এর মতো একই সিনট্যাক্স, এটি কেবল সার্ভারের দিকে।


আমি সম্প্রতি জাভা একটি এইচটিএমএল স্যানিটিজার লিখেছেন। এটি নিয়মিত এক্সপ্রেশন এবং জাভা কোডের মিশ্র পদ্ধতির উপর ভিত্তি করে তৈরি। ব্যক্তিগতভাবে আমি নিয়মিত এক্সপ্রেশন এবং তার মূর্খতা (পঠনযোগ্যতা, রক্ষণাবেক্ষণ, ইত্যাদি) ঘৃণা করি, তবে আপনি যদি এটির অ্যাপ্লিকেশনগুলির সুযোগটি কমাতে পারেন তবে এটি আপনার চাহিদাগুলি মাপসই করতে পারে। যাইহোক, আমার স্যানিটাইজার এইচটিএমএল ট্যাগের জন্য একটি সাদা তালিকা এবং কিছু শৈলী বৈশিষ্ট্যগুলির জন্য একটি কালো তালিকা ব্যবহার করে।

আপনার সুবিধার জন্য আমি একটি খেলার মাঠ সেট আপ করেছি যাতে কোডটি আপনার প্রয়োজনীয়তার সাথে মেলে কিনা তা পরীক্ষা করতে পারেন: খেলার মাঠ এবং জাভা কোড । আপনার মতামত প্রশংসা করা হবে।

আমার ব্লগে এই কাজটি বর্ণনা করার একটি ছোট নিবন্ধ রয়েছে: http://roberto.open-lab.com


মনে হচ্ছে আপনি শেষে "/" ছাড়া ট্যাগগুলি মেলানোর চেষ্টা করছেন। এটা চেষ্টা কর:

<([a-zA-Z][a-zA-Z0-9]*)[^>]*(?<!/)>

যখন আপনি regexes সহ এইচটিএমএল পার্স করতে পারছেন না এমন উত্তরগুলি সঠিক, তারা এখানে প্রযোজ্য নয়। OP ঠিক রেজেক্স সহ একটি এইচটিএমএল ট্যাগ বিশ্লেষণ করতে চায়, এবং এটি এমন একটি বিষয় যা নিয়মিত এক্সপ্রেশন দিয়ে করা যেতে পারে।

প্রস্তাবিত regex ভুল, যদিও:

<([a-z]+) *[^/]*?>

যদি আপনি রেজেক্সে কিছু যোগ করেন তবে ব্যাকট্র্যাকিং দ্বারা এটি নির্লজ্জ জিনিসগুলির সাথে মেলে ধরতে বাধ্য করা যেতে পারে <a >>, [^/]এটি অত্যন্ত অনুমতিপ্রাপ্ত। এছাড়াও <space>*[^/]*অকার্যকর যে নোট , কারণ [^/]*স্পেস ম্যাচ করতে পারেন।

আমার পরামর্শ হবে

<([a-z]+)[^>]*(?<!/)>

কোথায় (?<! ... )(পার্ল regexes মধ্যে) নেতিবাচক বর্ণন পিছনে। এটি "একটি <, তারপর একটি শব্দ, তারপর এমন কিছু যা পড়তে পারে না, যা শেষ / হতে পারে না"

মনে রাখবেন যে <a/ >এটিগুলি (যেমন মূল রেজেক্সের মতো) এর মতো জিনিসগুলিকে মঞ্জুরি দেয় , তাই যদি আপনি কিছু বেশি বিধিনিষেধ চান তবে আপনাকে স্পেস দ্বারা পৃথক বৈশিষ্ট্য জোড়াগুলির সাথে মেলে এমন একটি রেজেক্স তৈরি করতে হবে।


সেখানে BBCode সঙ্গে এইচটিএমএল প্রতিস্থাপন জন্য কিছু চমৎকার regexes হয় here । আপনারা সবাইকে বলবেন, তিনি এইচটিএমএল সম্পূর্ণরূপে বিশ্লেষণ করার চেষ্টা করছেন না, শুধু এটি স্যানিটাইজ করার জন্য। তিনি সম্ভবত তার সহজ "পার্সার" বুঝতে পারে না ট্যাগ বন্ধ হত্যা সামর্থ্য করতে পারেন।

উদাহরণ স্বরূপ:

$store =~ s/http:/http:\/\//gi;
$store =~ s/https:/https:\/\//gi;
$baseurl = $store;

if (!$query->param("ascii")) {
    $html =~ s/\s\s+/\n/gi;
    $html =~ s/<pre(.*?)>(.*?)<\/pre>/\[code]$2\[\/code]/sgmi;
}

$html =~ s/\n//gi;
$html =~ s/\r\r//gi;
$html =~ s/$baseurl//gi;
$html =~ s/<h[1-7](.*?)>(.*?)<\/h[1-7]>/\n\[b]$2\[\/b]\n/sgmi;
$html =~ s/<p>/\n\n/gi;
$html =~ s/<br(.*?)>/\n/gi;
$html =~ s/<textarea(.*?)>(.*?)<\/textarea>/\[code]$2\[\/code]/sgmi;
$html =~ s/<b>(.*?)<\/b>/\[b]$1\[\/b]/gi;
$html =~ s/<i>(.*?)<\/i>/\[i]$1\[\/i]/gi;
$html =~ s/<u>(.*?)<\/u>/\[u]$1\[\/u]/gi;
$html =~ s/<em>(.*?)<\/em>/\[i]$1\[\/i]/gi;
$html =~ s/<strong>(.*?)<\/strong>/\[b]$1\[\/b]/gi;
$html =~ s/<cite>(.*?)<\/cite>/\[i]$1\[\/i]/gi;
$html =~ s/<font color="(.*?)">(.*?)<\/font>/\[color=$1]$2\[\/color]/sgmi;
$html =~ s/<font color=(.*?)>(.*?)<\/font>/\[color=$1]$2\[\/color]/sgmi;
$html =~ s/<link(.*?)>//gi;
$html =~ s/<li(.*?)>(.*?)<\/li>/\[\*]$2/gi;
$html =~ s/<ul(.*?)>/\[list]/gi;
$html =~ s/<\/ul>/\[\/list]/gi;
$html =~ s/<div>/\n/gi;
$html =~ s/<\/div>/\n/gi;
$html =~ s/<td(.*?)>/ /gi;
$html =~ s/<tr(.*?)>/\n/gi;

$html =~ s/<img(.*?)src="(.*?)"(.*?)>/\[img]$baseurl\/$2\[\/img]/gi;
$html =~ s/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/\[url=$baseurl\/$2]$4\[\/url]/gi;
$html =~ s/\[url=$baseurl\/http:\/\/(.*?)](.*?)\[\/url]/\[url=http:\/\/$1]$2\[\/url]/gi;
$html =~ s/\[img]$baseurl\/http:\/\/(.*?)\[\/img]/\[img]http:\/\/$1\[\/img]/gi;

$html =~ s/<head>(.*?)<\/head>//sgmi;
$html =~ s/<object>(.*?)<\/object>//sgmi;
$html =~ s/<script(.*?)>(.*?)<\/script>//sgmi;
$html =~ s/<style(.*?)>(.*?)<\/style>//sgmi;
$html =~ s/<title>(.*?)<\/title>//sgmi;
$html =~ s/<!--(.*?)-->/\n/sgmi;

$html =~ s/\/\//\//gi;
$html =~ s/http:\//http:\/\//gi;
$html =~ s/https:\//https:\/\//gi;

$html =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//gsi;
$html =~ s/\r\r//gi;
$html =~ s/\[img]\//\[img]/gi;
$html =~ s/\[url=\//\[url=/gi;

<\s*(\w+)[^/>]*>

অংশ ব্যাখ্যা:

< : চরিত্র শুরু

\s* : এটি ট্যাগ নাম আগে কুটিরস্থান হতে পারে (কুৎসিত কিন্তু সম্ভব)।

(\w+)ট্যাগ: অক্ষর এবং সংখ্যা থাকতে পারে (h1)। আচ্ছা, \w'_' এর সাথে মেলে, কিন্তু আমি অনুমান করি না। যদি অদ্ভুত ব্যবহার ([a-zA-Z0-9] +) পরিবর্তে।

[^/>]*: ছাড়া >আর /বন্ধ করার কিছু>

> : বন্ধ >

সম্পর্কহীন

এবং যারা নিয়মিত অভিব্যক্তিগুলিকে কম মূল্যবান বলে মনে করে তারা হ'ল নিয়মিত ভাষাগুলির মতো শক্তিশালী:

একটি এন বি এন বি এন এন যা নিয়মিত এবং এমনকি প্রসঙ্গ বিনামূল্যে নয়, সাথে মিলিত করা যাবে^(a+)b\1b\1$

ব্যাক্রেফারেন্সিং FTW !





xhtml