Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression

/
/
g

Test String

Code Generator

Generated Code

# coding=utf8 # the above tag defines encoding for this document and is for Python 2.x compatibility import re regex = r"(?<! {5})(\".+?\": [^\\[{\n]+(?:,|\n))|(?<! {5})(\".+?\": {[\S\s]+?},)|(?<! {5})(\".+?\": \[[\S\s]+?\],)" test_str = ("{\n" " \"applicationId\": \"id651979466\",\n" " \"lastestVersion\": \"19.10.03\",\n" " \"originalUrlBottomTitle\": \"Nguồn <publisherName>\",\n" " \"titleUpdate\": \"Bạn đã sử dụng phiên bản cũ!!!\",\n" " \"messageUpdate\": \"Hãy cập nhật ứng dụng để trải nghiệm các tính năng mới, hấp dẫn.\",\n" " \"linkUpdate\": \"https://itunes.apple.com/app/id651979466\",\n" " \"introduce\": {\n" " \"title\": \"Đối tác chính thức\",\n" " \"introduceURL\": \"https://app.baomoi.com/publisher/list\"\n" " },\n" " \"buttonYes\": \"Cập nhật\",\n" " \"buttonNo\": \"Để sau\",\n" " \"statusUpdate\": 0,\n" " \"enableParse\": true,\n" " \"enableCrashlytics\": true,\n" " \"livescoreUrl\": \"https://baomoi.com/soccer/app\",\n" " \"commentCollapseMin\": 7,\n" " \"shareZalo\": true,\n" " \"loginFacebook\": false,\n" " \"shareFacebook\": true,\n" " \"shareFacebookMess\": true,\n" " \"zal\": true,\n" " \"zalInterval\": 259200,\n" " \"userLoZalInterval\": 86400,\n" " \"show_comment_time_limit\": 86400,\n" " \"enableWebm\": true,\n" " \"enableRenderAvatarUserName\": true,\n" " \"avatarDefaultNames\": [\n" " \"default\"\n" " ],\n" " \"logArticles\": 3,\n" " \"logVideos\": 2,\n" " \"show_feed_article_des\": false,\n" " \"inapp_noti_default_headline\": \"Báo Mới\",\n" " \"QoSLogReqLimit\": 50,\n" " \"QoSLogTimeLimit\": 0,\n" " \"QoSLogTimeLimitImages\": 0,\n" " \"impsLogTime\": 1000,\n" " \"impsLogSize\": 20,\n" " \"impsPollLogSize\": 1,\n" " \"timeReloadAds\": 5,\n" " \"defaultMode\": 0,\n" " \"defaultModeTablet\": 0,\n" " \"defaultModeIP5\": 1,\n" " \"maxArticles\": 1000,\n" " \"maxVideos\": 200,\n" " \"maxHotComments\": 3,\n" " \"timeReloadApp\": 1800,\n" " \"smallPreset\": \"a300,w200_r4x3,a400x\",\n" " \"mediumPreset\": \"a400,w200_r4x3,a500x\",\n" " \"largePreset\": \"a500,w300_r4x3,a700x\",\n" " \"iPadPreset\": \"a700,w400_r4x3,a800x\",\n" " \"iPX_listArticleFontSize\": \"18,20,22\",\n" " \"iPX_feedArticleFontSize\": \"18,20,22\",\n" " \"iPX_listTitleFontSize\": 17,\n" " \"iPX_feedTitleFontSize\": 19,\n" " \"iP6_listArticleFontSize\": \"18,20,22\",\n" " \"iP6_feedArticleFontSize\": \"18,20,22\",\n" " \"iP6_listTitleFontSize\": 18,\n" " \"iP6_feedTitleFontSize\": 20,\n" " \"iP6P_listArticleFontSize\": \"18,20,22\",\n" " \"iP6P_feedArticleFontSize\": \"18,20,22\",\n" " \"iP6P_listTitleFontSize\": 18,\n" " \"iP6P_feedTitleFontSize\": 20,\n" " \"iPad_listArticleFontSize\": \"22,24,26\",\n" " \"iPad_feedArticleFontSize\": \"24,26,28\",\n" " \"iPad_listTitleFontSize\": 24,\n" " \"iPad_feedTitleFontSize\": 26,\n" " \"iP5_listArticleFontSize\": \"18,20,22\",\n" " \"iP5_feedArticleFontSize\": \"20,22,24\",\n" " \"iP5_listTitleFontSize\": 18,\n" " \"iP5_feedTitleFontSize\": 22,\n" " \"pageRequestCounter\": 15,\n" " \"showCounter\": true,\n" " \"showLastestNewsButton\": true,\n" " \"showSlideBanner\": false,\n" " \"videoFormat\": 0,\n" " \"allowPreloadVideo\": true,\n" " \"wifi_chunkPreloadVideo\": 1,\n" " \"3g_chunkPreloadVideo\": 0,\n" " \"commentHints\": \"Bình luận phải có ít nhất 3 chữ|Bình luận phải dùng tiếng Việt có dấu.|Bình luận không nói tục, chửi bậy.|Bình luận không chứa liên kết, quảng cáo.\",\n" " \"feedName\": \"Theo dõi\",\n" " \"feedThumbURL\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/AppFeedThumb/feedthumb1.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/AppFeedThumb/feedthumb2.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/AppFeedThumb/feedthumb3.jpg\"\n" " ],\n" " \"feedEmptyScreenMsg\": \"Theo dõi thêm nguồn \\nđể có thêm tin trong danh sách\",\n" " \"defaultZoneNewsTab\": \"c_0\",\n" " \"fixedZones\": \"Tin nóng|c_0,Tin mới|c_-1\",\n" " \"defaultZones\": \"Bóng đá VN|c_87,Bóng đá QT|c_86,Độc & Lạ|c_79,Tình yêu|c_139,Giải trí|c_52,Thế giới|c_119,Pháp luật|c_58,Xe 360|c_145,Công Nghệ|c_53,Ẩm thực|c_84,Làm đẹp|c_138,Sức khỏe|c_82,Du lịch|c_137\",\n" " \"allZones\": \"Tin mới|c_-1,Bóng đá VN|c_87,Bóng đá QT|c_86,Độc & Lạ|c_79,Tình yêu|c_139,Giải trí|c_52,Thế giới|c_119,Pháp luật|c_58,Xe 360|c_145,Công Nghệ|c_53,Ẩm thực|c_84,Làm đẹp|c_138,Sức khỏe|c_82,Du lịch|c_137,Nhà đất|c_147,Thời sự|c_144,Thiết bị - Phần cứng|c_136,Kinh tế|c_45,Giáo dục|c_59,Không gian - Kiến trúc|c_150,Thời trang|c_72\",\n" " \"updatedZones\": \"Bóng đá VN|c_87\",\n" " \"excludedZones\": \"\",\n" " \"changedZones\": \"k_Biển Đông|top_228,st_5|top_228\",\n" " \"regions\": \"Hà Nội|r_Hà Nội|29,TP. HCM|r_TP. HCM|50,An Giang|r_An Giang|67,Bắc Giang|r_Bắc Giang|98,Bắc Kạn|r_Bắc Kạn|97,Bạc Liêu|r_Bạc Liêu|94,Bắc Ninh|r_Bắc Ninh|99,Bến Tre|r_Bến Tre|71,Bình Định|r_Bình Định|77,Bình Dương|r_Bình Dương|61,Bình Phước|r_Bình Phước|93,Bình Thuận|r_Bình Thuận|86,BR-VT|r_BR-VT|72,Cà Mau|r_Cà Mau|69,Cần Thơ|r_Cần Thơ|65,Cao Bằng|r_Cao Bằng|11,Đà Nẵng|r_Đà Nẵng|43,Đăk Lăk|r_Đăk Lăk|47,Đăk Nông|r_Đăk Nông|48,Điện Biên|r_Điện Biên|27,Đồng Nai|r_Đồng Nai|60,Đồng Tháp|r_Đồng Tháp|66,Gia Lai|r_Gia Lai|81,Hà Giang|r_Hà Giang|23,Hà Nam|r_Hà Nam|90,Hà Tĩnh|r_Hà Tĩnh|38,Hải Dương|r_Hải Dương|34,Hải Phòng|r_Hải Phòng|15,Hậu Giang|r_Hậu Giang|95,Hòa Bình|r_Hòa Bình|28,Hưng Yên|r_Hưng Yên|89,Khánh Hòa|r_Khánh Hòa|79,Kiên Giang|r_Kiên Giang|68,Kon Tum|r_Kon Tum|82,Lai Châu|r_Lai Châu|25,Lâm Đồng|r_Lâm Đồng|49,Lạng Sơn|r_Lạng Sơn|12,Lào Cai|r_Lào Cai|24,Long An|r_Long An|62,Nam Định|r_Nam Định|18,Nghệ An|r_Nghệ An|37,Ninh Bình|r_Ninh Bình|35,Ninh Thuận|r_Ninh Thuận|85,Phú Thọ|r_Phú Thọ|19,Phú Yên|r_Phú Yên|78,Quảng Bình|r_Quảng Bình|73,Quảng Nam|r_Quảng Nam|92,Quảng Ngãi|r_Quảng Ngãi|76,Quảng Ninh|r_Quảng Ninh|14,Quảng Trị|r_Quảng Trị|74,Sóc Trăng|r_Sóc Trăng|83,Sơn La|r_Sơn La|26,Tây Ninh|r_Tây Ninh|70,Thái Bình|r_Thái Bình|17,Thái Nguyên|r_Thái Nguyên|20,Thanh Hóa|r_Thanh Hóa|36,Tiền Giang|r_Tiền Giang|63,Trà Vinh|r_Trà Vinh|84,TT Huế|r_TT Huế|75,Tuyên Quang|r_Tuyên Quang|22,Vĩnh Long|r_Vĩnh Long|64,Vĩnh Phúc|r_Vĩnh Phúc|88,Yên Bái|r_Yên Bái|21\",\n" " \"domainIcon\": \"https://baomoi-static.zadn.vn/icon_publishers\",\n" " \"topPublishers\": \"VietnamNet|p_23,Tiền Phong|p_20,VTC News|p_83,Zing|p_119,VOV|p_65,VietnamPlus|p_293,PLO|p_114,Infonet|p_240\",\n" " \"defaultVideoZones\": [\n" " {\n" " \"zoneName\": \"Mới\",\n" " \"zoneId\": \"v_-1\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/New/v_-1_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/New/v_-1_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/New/v_-1_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Ahihi\",\n" " \"zoneId\": \"v_12\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Ahihi/v_12_1_20181031_fixed.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Ahihi/v_12_2_20181031_fixed.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Ahihi/v_12_3_20181031_fixed.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"OMG\",\n" " \"zoneId\": \"v_47\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/OMG/v_47_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/OMG/v_47_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/OMG/v_47_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"2Tek\",\n" " \"zoneId\": \"v_43\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Hightek/v_43_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Hightek/v_43_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Hightek/v_43_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Bóng đá\",\n" " \"zoneId\": \"v_21\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/BongDa/v_21_1_20181108.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/BongDa/v_21_2_20181108.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/BongDa/v_21_3_20181108.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Cute\",\n" " \"zoneId\": \"v_40\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Cute/v_40_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Cute/v_40_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Cute/v_40_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Showbiz\",\n" " \"zoneId\": \"v_6\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Showbiz/v_6_1_20181226.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Showbiz/v_6_2_20181226.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Showbiz/v_6_3_20181226.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Sống\",\n" " \"zoneId\": \"v_37\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Ngam/v_37_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Ngam/v_37_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Ngam/v_37_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Lifestyle\",\n" " \"zoneId\": \"v_16\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/LifeStyle/v_16_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/LifeStyle/v_16_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/LifeStyle/v_16_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"News\",\n" " \"zoneId\": \"v_1\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/News/v_1_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/News/v_1_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/News/v_1_3_20181031.jpg\"\n" " ]\n" " },\n" " {\n" " \"zoneName\": \"Top\",\n" " \"zoneId\": \"v_0\",\n" " \"images\": [\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Top/v_0_1_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Top/v_0_2_20181031.jpg\",\n" " \"https://baomoi-static.zadn.vn/Uploaded/VideoSubTabImgs/Top/v_0_3_20181031.jpg\"\n" " ]\n" " }\n" " ],\n" " \"pubProfileTabsName\": \"1|Tổng hợp,9|Video,13|Poll,15|Q&A\",\n" " \"logChannels\": 2,\n" " \"maxChannelContents\": 10,\n" " \"channelFontSize\": \"13,14,14\",\n" " \"articleVideoMode\": 1,\n" " \"articleViewMode\": 1,\n" " \"tapForSoundShowingTime\": 1,\n" " \"tapForSoundText\": \"Bấm video để mở tiếng\",\n" " \"numberOfInsertedArticles\": 3,\n" " \"recommendListRefreshInterval\": 1800000,\n" " \"showRecommendGroup\": false,\n" " \"recommendGroupName\": \"CÓ THỂ BẠN QUAN TÂM\",\n" " \"recommendGroupBtnText\": \"Xem thêm\",\n" " \"suggestReplyCondition\": 3,\n" " \"hideArticleReasonsDefault\": \"Bạo lực|content,Đồi trụy|content,Phản cảm|content,Xuyên tạc|content,Kỳ thị địa phương|content\",\n" " \"popupHideArticleMsg\": \"Vui lòng chọn các nguyên nhân khiến bạn không thích bài viết này để chúng tôi có thể đề xuất tin cho bạn tốt hơn\",\n" " \"reportArticleReasons\": \"Tin gốc đã gỡ|original_removed,Tin gốc đã cập nhật|original_updated,Bạo lực|content,Đồi trụy|content,Phản cảm|content,Xuyên tạc|content,Kỳ thị địa phương|content,Ý kiến khác...|other\",\n" " \"popupReportArticleMsg\": \"Vui lòng chọn các nguyên nhân bạn muốn báo cáo nội dung bài viết này\",\n" " \"reportVideoReasons\": \"Tin gốc đã gỡ|original_removed,Tin gốc đã cập nhật|original_updated,Bạo lực|content,Đồi trụy|content,Phản cảm|content,Xuyên tạc|content,Kỳ thị địa phương|content,Ý kiến khác...|other\",\n" " \"popupReportVideoMsg\": \"Vui lòng chọn các nguyên nhân bạn muốn báo cáo nội dung video này\",\n" " \"reportCommentReasons\": \"Bạo lực|comment,Đồi trụy|comment,Phản cảm|comment,Xuyên tạc|comment,Kỳ thị địa phương|comment,Spam|comment,Ý kiến khác...|other\",\n" " \"popupReportCommentMsg\": \"Vui lòng chọn các nguyên nhân báo xấu bình luận này của người dùng %s\",\n" " \"stepToShowTripleCell\": 0,\n" " \"appNavBarBg\": \"https://baomoi-static.zadn.vn/Uploaded/Bao_BD/nav_bar_bg_default@3x.png\",\n" " \"nativeAdsReportMessage\": \"Chúng tôi sẽ cố gắng hạn chế hiển thị quảng cáo này đến bạn.\",\n" " \"nativeAdsReportPopupMsg\": \"Vui lòng chọn các nguyên nhân báo xấu quảng cáo này\",\n" " \"articleVideoAutoPlay\": true,\n" " \"listVideoAutoPlay\": true,\n" " \"listVideoAutoPlayNext\": true,\n" " \"listTopCmtArticleCondition\": \"50,200,500\",\n" " \"replyLoadMoreAmount\": 10,\n" " \"articleTopCommentGroup\": true,\n" " \"coverageEnable\": true,\n" " \"articleCmtBoxHiddenEnable\": true,\n" " \"articleViewCloseBtnCondition\": 2,\n" " \"sectionBoxesEnable\": [\n" " 0,\n" " 1,\n" " 2,\n" " 3,\n" " 4,\n" " 10,\n" " 11,\n" " 20,\n" " 30,\n" " 40\n" " ],\n" " \"content_type\": {\n" " \"article\": [\n" " 1\n" " ],\n" " \"video\": [\n" " 9\n" " ],\n" " \"topic\": [\n" " 5,\n" " 6,\n" " 7\n" " ],\n" " \"qaQuestion\": [\n" " 15\n" " ],\n" " \"qaAnswer\": [\n" " 16\n" " ],\n" " \"poll\": [\n" " 13\n" " ],\n" " \"comment\": [\n" " 18\n" " ]\n" " },\n" " \"qaHistorySize\": 40\n" " }") matches = re.finditer(regex, test_str) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum))) # Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html