ToolDeck

Regex পরীক্ষক

স্ট্রিং-এ রেগুলার এক্সপ্রেশন পরীক্ষা করুন এবং সমস্ত ম্যাচ হাইলাইট দেখুন

একটি উদাহরণ চেষ্টা করুন

প্যাটার্ন

//g

পরীক্ষার স্ট্রিং

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ

রেগুলার এক্সপ্রেশন কী?

রেগুলার এক্সপ্রেশন (regex বা regexp) হলো অক্ষরের একটি ক্রম যা একটি সার্চ প্যাটার্ন সংজ্ঞায়িত করে। Regex পরীক্ষক আপনাকে একটি প্যাটার্ন লিখতে, নমুনা টেক্সটে প্রয়োগ করতে এবং রিয়েল টাইমে সমস্ত ম্যাচ হাইলাইট দেখতে দেয়। এই ধারণার উৎপত্তি গণিতবিদ Stephen Kleene-এর ১৯৫০-এর দশকের রেগুলার ল্যাঙ্গুয়েজ গবেষণা থেকে। Ken Thompson ১৯৬৮ সালে QED টেক্সট এডিটরে প্রথম regex ইঞ্জিন তৈরি করেন।

একটি regex ইঞ্জিন প্যাটার্ন বাঁ থেকে ডানে পড়ে এবং ম্যাচ করার চেষ্টায় ইনপুট অক্ষর গ্রহণ করে। আংশিক ম্যাচ ব্যর্থ হলে ইঞ্জিন ব্যাকট্র্যাকিং ব্যবহার করে: এটি পিছিয়ে আসে এবং প্যাটার্নের মধ্য দিয়ে বিকল্প পথ চেষ্টা করে। কিছু ইঞ্জিন (যেমন Go-তে ব্যবহৃত RE2) প্যাটার্নকে deterministic finite automata (DFA)-তে রূপান্তর করে ব্যাকট্র্যাকিং সম্পূর্ণ এড়িয়ে যায়, যা রৈখিক সময়ে ম্যাচিং নিশ্চিত করে — তবে back-reference-এর মতো বৈশিষ্ট্যের জন্য সমর্থন হারায়।

Regex সিনট্যাক্স আলগাভাবে মানকীকৃত। PCRE (Perl Compatible Regular Expressions) সবচেয়ে সাধারণ ধরন, যা PHP, Python-এর re মডিউল এবং JavaScript সামান্য পার্থক্যসহ সমর্থন করে। POSIX grep ও sed-এ ব্যবহৃত আরও সীমিত সিনট্যাক্স সংজ্ঞায়িত করে। ভাষার মধ্যে প্যাটার্ন স্থানান্তরের সময় পার্থক্যগুলি গুরুত্বপূর্ণ: JavaScript-এ কাজ করা একটি lookahead Go-এর RE2 ইঞ্জিনে একেবারেই কম্পাইল নাও হতে পারে।

কেন অনলাইন Regex পরীক্ষক ব্যবহার করবেন?

কোড ফাইলে regex লেখার মানে প্রতিবার প্যাটার্ন পরিবর্তন করলে সেভ করা, চালানো এবং আউটপুট পরীক্ষা করা। ব্রাউজার-ভিত্তিক regex পরীক্ষক সেই ফিডব্যাক লুপ শূন্যে নিয়ে আসে: আপনি টাইপ করুন, ম্যাচ দেখুন।

রিয়েল-টাইম ম্যাচ হাইলাইটিং
প্রতিটি কীস্ট্রোকে ম্যাচ ফলাফল তাৎক্ষণিকভাবে আপডেট হয়। আপনি দেখতে পান টেক্সটের কোন অংশ মিলেছে, কোন ক্যাপচার গ্রুপ পূর্ণ হয়েছে এবং প্রতিটি ম্যাচ ঠিক কোথায় শুরু ও শেষ হয়। কম্পাইল-রান-ডিবাগ চক্রের কোনো প্রয়োজন নেই।
🔒
প্রাইভেসি-প্রথম প্রক্রিয়াকরণ
প্যাটার্ন ম্যাচিং JavaScript RegExp ইঞ্জিন ব্যবহার করে আপনার ব্রাউজারে চলে। কোনো টেক্সট বা প্যাটার্ন সার্ভারে পাঠানো হয় না। লগ ফাইল, গ্রাহক ডেটা বা সংবেদনশীল তথ্য থাকা API রেসপন্সের বিরুদ্ধে পরীক্ষা করার সময় এটি গুরুত্বপূর্ণ।
🔍
দৃশ্যমান ম্যাচ পরীক্ষা
ম্যাচগুলি তাদের অবস্থান এবং ক্যাপচার গ্রুপ মান সহ ইনলাইনে হাইলাইট করা হয়। ম্যাচ দৃশ্যমানভাবে দেখা quantifier-এ off-by-one ভুল বা অনুপস্থিত anchor ধরা সহজ করে।
🌐
লগইন বা ইনস্টলের প্রয়োজন নেই
আধুনিক ব্রাউজার সহ যেকোনো ডিভাইসে কাজ করে। কোনো অ্যাকাউন্ট, এক্সটেনশন বা IDE প্লাগইন নেই। পেজ খুলুন, প্যাটার্ন ও টেক্সট পেস্ট করুন এবং পরীক্ষা শুরু করুন।

Regex পরীক্ষকের ব্যবহারের ক্ষেত্র

ফ্রন্টএন্ড ইনপুট ভ্যালিডেশন
HTML5 pattern অ্যাট্রিবিউট বা JavaScript ভ্যালিডেশন লজিকে এম্বেড করার আগে ইমেইল, ফোন নম্বর বা ক্রেডিট কার্ড ফিল্ডের প্যাটার্ন তৈরি ও যাচাই করুন।
ব্যাকএন্ড লগ পার্সিং
অ্যাপ্লিকেশন লগ থেকে টাইমস্ট্যাম্প, ত্রুটি কোড বা IP ঠিকানা বের করার regex প্যাটার্ন লিখুন। প্যাটার্ন সঠিক গ্রুপ ক্যাপচার করছে কিনা নিশ্চিত করতে প্রকৃত লগ নমুনায় পরীক্ষা করুন।
DevOps ও অবকাঠামো
Nginx location block, Apache rewrite rule বা Prometheus alerting rule-এ ব্যবহৃত regex ডিবাগ করুন। সার্ভার কনফিগে ভুল প্যাটার্ন রাউটিং ভেঙে দিতে বা সতর্কতা সম্পূর্ণ মিস করতে পারে।
QA ও টেস্ট অটোমেশন
এন্ড-টু-এন্ড টেস্ট assertion-এ রেসপন্স বডি বা HTML আউটপুট প্রত্যাশিত প্যাটার্নের সাথে মিলছে কিনা যাচাই করুন। টেস্ট স্যুটে কমিট করার আগে এখানে regex পরীক্ষা করুন।
ডেটা এক্সট্র্যাকশন পাইপলাইন
অগঠিত টেক্সট থেকে কাঠামোবদ্ধ ক্ষেত্র বের করার প্যাটার্ন তৈরি করুন: পণ্যের দাম স্ক্র্যাপিং, CSV edge case পার্সিং বা ইমেইল হেডার থেকে মেটাডেটা বের করা।
রেগুলার এক্সপ্রেশন শেখা
নমুনা স্ট্রিংয়ের বিরুদ্ধে metacharacter, quantifier এবং গ্রুপ নিয়ে পরীক্ষা করুন। তাৎক্ষণিক দৃশ্যমান ফিডব্যাক শুধু ডকুমেন্টেশন পড়ার চেয়ে regex সিনট্যাক্স শেখা সহজ করে।

Regex সিনট্যাক্স দ্রুত রেফারেন্স

নিচের সারণীতে সবচেয়ে বেশি ব্যবহৃত regex টোকেন দেওয়া আছে। এগুলি JavaScript, Python, Go, PHP এবং বেশিরভাগ PCRE-সামঞ্জস্যপূর্ণ ইঞ্জিনে কাজ করে। ভাষা-নির্দিষ্ট এক্সটেনশন (যেমন Python-এর conditional pattern বা JavaScript-এর \k সিনট্যাক্স সহ named group) কোড উদাহরণ বিভাগে উল্লেখ করা হয়েছে।

প্যাটার্ননামবিবরণ
.Any characterMatches any single character except newline (unless s flag is set)
\dDigitMatches [0-9]
\wWord characterMatches [a-zA-Z0-9_]
\sWhitespaceMatches space, tab, newline, carriage return, form feed
\bWord boundaryMatches the position between a word character and a non-word character
^Start of string/lineMatches the start of the input; with m flag, matches start of each line
$End of string/lineMatches the end of the input; with m flag, matches end of each line
*Zero or moreMatches the preceding token 0 or more times (greedy)
+One or moreMatches the preceding token 1 or more times (greedy)
?OptionalMatches the preceding token 0 or 1 time
{n,m}Quantifier rangeMatches the preceding token between n and m times
()Capturing groupGroups tokens and captures the matched text for back-references
(?:)Non-capturing groupGroups tokens without capturing the matched text
(?=)Positive lookaheadMatches a position followed by the given pattern, without consuming it
(?<=)Positive lookbehindMatches a position preceded by the given pattern, without consuming it
[abc]Character classMatches any one of the characters inside the brackets
[^abc]Negated classMatches any character not inside the brackets
|AlternationMatches the expression before or after the pipe

Regex ফ্ল্যাগ ব্যাখ্যা

ফ্ল্যাগ (modifier-ও বলা হয়) ইঞ্জিন কীভাবে প্যাটার্ন প্রক্রিয়া করে তা পরিবর্তন করে। JavaScript-এ শেষ স্ল্যাশের পরে যোগ করুন: /pattern/gi। Python-এ দ্বিতীয় আর্গুমেন্ট হিসেবে দিন: re.findall(pattern, text, re.IGNORECASE | re.MULTILINE)। সব ফ্ল্যাগ প্রতিটি ভাষায় পাওয়া যায় না।

ফ্ল্যাগনামআচরণ
gGlobalFind all matches, not just the first one
iCase-insensitiveLetters match both uppercase and lowercase
mMultiline^ and $ match start/end of each line, not just the whole string
sDot-all. matches newline characters as well
uUnicodeTreat the pattern and subject as a Unicode string; enables \u{FFFF} syntax
yStickyMatches only from the lastIndex position in the target string

কোড উদাহরণ

JavaScript, Python, Go এবং কমান্ড লাইনে কার্যকর regex উদাহরণ। প্রতিটি উদাহরণে প্যাটার্ন তৈরি, ম্যাচ এক্সট্র্যাকশন এবং আউটপুট দেখানো হয়েছে।

JavaScript
// Match all email addresses in a string
const text = 'Contact us at support@example.com or sales@example.com'
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g

const matches = text.matchAll(emailRegex)
for (const match of matches) {
  console.log(match[0], 'at index', match.index)
}
// → "support@example.com" at index 14
// → "sales@example.com" at index 37

// Named capture groups (ES2018+)
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/
const result = '2026-03-30'.match(dateRegex)
console.log(result.groups)
// → { year: "2026", month: "03", day: "30" }

// Replace with a callback
'hello world'.replace(/\b\w/g, c => c.toUpperCase())
// → "Hello World"
Python
import re

# Find all IPv4 addresses
text = 'Server 192.168.1.1 responded, fallback to 10.0.0.255'
pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'

matches = re.findall(pattern, text)
print(matches)  # → ['192.168.1.1', '10.0.0.255']

# Named groups and match objects
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, 'Released on 2026-03-30')
if m:
    print(m.group('year'))   # → '2026'
    print(m.group('month'))  # → '03'

# Compile for repeated use (faster in loops)
compiled = re.compile(r'\b[A-Z][a-z]+\b')
words = compiled.findall('Hello World Foo bar')
print(words)  # → ['Hello', 'World', 'Foo']
Go
package main

import (
	"fmt"
	"regexp"
)

func main() {
	// Find all matches
	re := regexp.MustCompile(`\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b`)
	text := "Contact support@example.com or sales@example.com"
	matches := re.FindAllString(text, -1)
	fmt.Println(matches)
	// → [support@example.com sales@example.com]

	// Named capture groups
	dateRe := regexp.MustCompile(`(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})`)
	match := dateRe.FindStringSubmatch("2026-03-30")
	for i, name := range dateRe.SubexpNames() {
		if name != "" {
			fmt.Printf("%s: %s\n", name, match[i])
		}
	}
	// → year: 2026
	// → month: 03
	// → day: 30

	// Replace with a function
	result := re.ReplaceAllStringFunc(text, func(s string) string {
		return "[REDACTED]"
	})
	fmt.Println(result)
	// → Contact [REDACTED] or [REDACTED]
}
CLI (grep / sed)
# Find lines matching an IP address pattern
grep -E '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' access.log

# Extract email addresses from a file
grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' contacts.txt

# Replace dates from YYYY-MM-DD to DD/MM/YYYY using sed
echo "2026-03-30" | sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/'
# → 30/03/2026

# Count matches per file in a directory
grep -rcE 'TODO|FIXME|HACK' src/
# → src/main.js:3
# → src/utils.js:1

প্রায়শই জিজ্ঞাসিত প্রশ্ন

regex এবং glob প্যাটার্নের মধ্যে পার্থক্য কী?
Glob প্যাটার্ন (যেমন *.txt বা src/**/*.js) শেল ও বিল্ড টুলে ফাইল পাথ ম্যাচিংয়ের জন্য ব্যবহৃত একটি সরলীকৃত ওয়াইল্ডকার্ড সিনট্যাক্স। এগুলি * (যেকোনো অক্ষর), ? (একটি অক্ষর) এবং [] (অক্ষর শ্রেণি) সমর্থন করে, কিন্তু quantifier, গ্রুপ, lookahead এবং alternation নেই। Regex অনেক বেশি প্রকাশক্ষম এবং শুধু ফাইল পাথ নয়, যেকোনো টেক্সটে কাজ করে। Glob প্যাটার্ন *.json মোটামুটি regex ^.*\.json$-এর সমতুল্য।
regex-এ একটি আক্ষরিক ডট বা ব্র্যাকেট কীভাবে ম্যাচ করব?
অক্ষরের আগে ব্যাকস্ল্যাশ দিন: \. একটি আক্ষরিক পিরিয়ড ম্যাচ করে, \[ একটি আক্ষরিক ব্র্যাকেট ম্যাচ করে। অক্ষর শ্রেণি []-এর মধ্যে ডট ইতিমধ্যে আক্ষরিক এবং escape-এর প্রয়োজন নেই। সাধারণ ভুল হলো 192.168.1.1 লেখা ডট escape না করে, যা 192x168y1z1-ও ম্যাচ করে কারণ . মানে "যেকোনো অক্ষর"।
আমার পরীক্ষার ডেটা কি সার্ভারে পাঠানো হয়?
না। এই টুল JavaScript RegExp ইঞ্জিন ব্যবহার করে সম্পূর্ণ আপনার ব্রাউজারে regex ম্যাচিং চালায়। আপনার টেক্সট বা প্যাটার্ন দিয়ে কোনো নেটওয়ার্ক রিকোয়েস্ট করা হয় না। টুল ব্যবহারের সময় ব্রাউজার DevTools Network ট্যাব খুলে এটি নিশ্চিত করতে পারেন।
আমার regex JavaScript-এ কাজ করে কিন্তু Python-এ ব্যর্থ হয় কেন?
JavaScript এবং Python ভিন্ন regex ইঞ্জিন ব্যবহার করে যাদের বৈশিষ্ট্য সামান্য আলাদা। JavaScript \d, lookahead (?=) এবং ES2018 থেকে lookbehind (?<=) সমর্থন করে, কিন্তু conditional pattern, atomic group বা possessive quantifier সমর্থন করে না। Python-এর re মডিউল \p{} Unicode property শ্রেণি সমর্থন করে না (তৃতীয়-পক্ষ regex মডিউল ব্যবহার করুন)। সর্বদা লক্ষ্য ভাষার ইঞ্জিনে পরীক্ষা করুন বা ভাষার regex ডকুমেন্টেশন দেখুন।
regex-এ catastrophic backtracking কী কারণে হয়?
Catastrophic backtracking ঘটে যখন একটি প্যাটার্নে nested quantifier ম্যাচিং পথের সংখ্যা তাৎপর্যকভাবে বাড়িয়ে দেয়। ক্লাসিক উদাহরণ হলো (a+)+ একটি non-matching অক্ষরের আগে a-এর স্ট্রিংয়ে প্রয়োগ করা। ব্যর্থ হওয়ার আগে ইঞ্জিন অভ্যন্তরীণ ও বাহ্যিক গ্রুপের মধ্যে a ভাগ করার প্রতিটি সম্ভাব্য উপায় চেষ্টা করে। atomic group (?>), possessive quantifier a++ ব্যবহার করে বা অস্পষ্ট পুনরাবৃত্তি এড়াতে প্যাটার্ন পুনর্লিখন করে এটি সমাধান করুন।
regex দিয়ে কি HTML পার্স করা যায়?
Regex একটি একক <a> ট্যাগ থেকে href বের করার মতো HTML ফ্র্যাগমেন্ট থেকে সরল মান এক্সট্র্যাক্ট করতে পারে। সম্পূর্ণ HTML পার্সিংয়ের জন্য সঠিক পার্সার ব্যবহার করুন (JavaScript-এ DOMParser, Python-এ BeautifulSoup বা Go-তে html/template)। HTML একটি context-free grammar এবং regex রেগুলার grammar সামলায়। নেস্টেড ট্যাগ, ঐচ্ছিক অ্যাট্রিবিউট এবং self-closing উপাদান এমন প্যাটার্ন তৈরি করে যা regex নির্ভরযোগ্যভাবে ম্যাচ করতে পারে না।
greedy এবং lazy quantifier-এর মধ্যে পার্থক্য কী?
Greedy quantifier (* বা +) যতটা সম্ভব বেশি অক্ষর ম্যাচ করে, তারপর বাকি প্যাটার্ন ব্যর্থ হলে ব্যাকট্র্যাক করে। Lazy quantifier (*? বা +?) যতটা সম্ভব কম অক্ষর ম্যাচ করে, শুধু প্রয়োজনে প্রসারিত হয়। <b>one</b><b>two</b> ইনপুটের জন্য, greedy প্যাটার্ন <b>.*</b> প্রথম <b> থেকে শেষ </b> পর্যন্ত পুরো স্ট্রিং ম্যাচ করে, আর lazy প্যাটার্ন <b>.*?</b> আলাদাভাবে <b>one</b> এবং <b>two</b> ম্যাচ করে।

সম্পর্কিত টুলস

শব্দ গণনাকারীশব্দ, অক্ষর, বাক্য, অনুচ্ছেদ গণনা করুন এবং পড়ার সময় অনুমান করুনকেস রূপান্তরকারীটেক্সট uppercase, lowercase, title case, camelCase, snake_case এবং আরও কেসের মধ্যে রূপান্তর করুনলোরেম ইপসাম জেনারেটরকনফিগারযোগ্য অনুচ্ছেদ ও শব্দ সহ লোরেম ইপসাম প্লেসহোল্ডার টেক্সট তৈরি করুনলাইন সর্টারলাইনগুলি বর্ণানুক্রমিক, দৈর্ঘ্য অনুযায়ী, বিপরীত বা র্যান্ডমলি সাজানসদৃশ লাইন অপসারণকারীপাঠ্য থেকে সদৃশ লাইনগুলি সরান, শুধুমাত্র অনন্য লাইনগুলি রাখুনটেক্সট ডিফদুটি টেক্সট পাশাপাশি তুলনা করুন এবং লাইন-বাই-লাইন পার্থক্য হাইলাইট করুনMarkdown প্রিভিউরিয়েল টাইমে Markdown টেক্সট HTML হিসেবে রেন্ডার করে প্রিভিউ দেখুনপাসওয়ার্ড জেনারেটরকাস্টমাইজযোগ্য দৈর্ঘ্য এবং ক্যারেক্টার সেট দিয়ে শক্তিশালী র‍্যান্ডম পাসওয়ার্ড তৈরি করুনস্লাগ জেনারেটরযেকোনো টেক্সটকে পরিষ্কার URL-বান্ধব স্লাগে রূপান্তর করুন