wikipedia
en
http://
All disambiguation pages
CategoryListProvider
true
false
false
true
false
Notes
OnWholePage
- Rules with * in the name use templates or parser functions. Rules with ** use substitution.
- Rules with (if) in the name have search strings on the "If" tab.
--------
Optimization:
- Instead of ( *.+), use (.+) (MUCH faster)
- To IGNORE matches found BETWEEN strings OPEN and CLOSE:
match(?![^OC]*(?!OPEN)[^OC]*CLOSE) (faster than neg lookbehind)
false
false
1
None
None
true
true
true
Insert missing line break between entries
OnWholePage
(^\*+ *.*)(\*+ *.*)
$1
$2
true
false
1
None
None
true
No double spaces or tabs
OnWholePage
(?<=[^\s-])( | ){2,}(?=[^\s-])
true
false
1
None
None
VISIBLE WHITESPACE (placeholder)
OnWholePage
false
false
1
None
None
true
true
Double newline between sections (NEW)
OnWholePage
(?<=[^=}\n])\n(?==[=]+)
\n\n
true
false
1
None
None
INVISIBLE WHITESPACE (placeholder)
OnWholePage
false
false
1
None
None
true
true
"may refer to" 1
OnWholePage
(?<=^[^\*].*)(?<!(commonly|mainly|(most )?often|ordinarily|primarily|principally|typically|usually) )((?<also1>(also )?)(?<= )(may|can|could|might|is) (?<also2>(also )?)(be used to )?(?<= )(refer to|be|mean)|(?<also1>(also )?)(?<= )(refers to|is|means))( (any|one|any one|several|multiple|either))?( of)?( (a number of|the following|these))?( [\w ]+)?:? *\n
may ${also1}${also2}refer to:\n
true
false
1
None
IgnoreCase Multiline
true
"may refer to" 2
OnWholePage
(has|(may|can) have) (several |many )?(different |alternat(iv)?e )?meanings\.?(, including)?:?
may refer to:
true
false
1
None
None
true
Drop "The word(s)"**
OnWholePage
The (expression|phrase|term|title|word)(s)? '''(?<q>['"]*)(?<first>\w)(?!['"]* may refer)
'''${q}{{subst:uc:${first}}}
true
false
1
None
None
true
Add missing intro**
OnWholePage
^\s*([=;\*].*)
{{subst:PAGENAMEBASE}} may refer to:\n\n$1
true
false
1
None
None
true
Rm NOTOC
OnWholePage
(__|\{\{)NO( )?TOC(__|\}\})\n
true
false
1
None
IgnoreCase
true
Remove some dicdefs (NEW)
OnWholePage
^[^\[\]\n]* (is|are|means|is a(n)? .*(word|noun|(ad)?verb|adjective) (meaning|(often )?translated as)) [^\[\]\n]*\.\n
true
false
1
None
Multiline
true
(if) wikt before intro (NEW)
OnWholePage
(?<intro>^'''.+)\n+(?<wikt>\{\{[Ww]ikt(ionary)?[^\{\}\n]*\}\})
${wikt}\n${intro}
\{\{[Ww]ikt
true
false
1
None
Multiline Singleline
INTRO (placeholder)**
OnWholePage
false
false
1
None
None
true
true
(if) Comment out refs (revised)
OnWholePage
(?<ref>\<[Rr]ef( +[\w ]+=[\w '"]+ *)*(\>[^\<\>]*\</[Rr]ef\>|/\>))(?![^\<\>]*(?!\<!--)[^\<\>]*--\>)
<!--${ref}-->
<[Rr]ef
true
true
1
None
None
true
(if) Comment ext links outside refs (revised)
OnWholePage
(?<link>\[?http[s]?://[^\s\[\]]+(?<display> [^\[\]]+(?=\]))?\]?)(?![^\<\>]*(?!\<[Rr]ef[^\<\>]*\>)[^\<\>]*\</ref\>)(?![^\<\>]*(?!\<!--)[^\<\>]*--\>)
<!--${link}-->
http[s]?://
true
true
1
None
None
true
Fix wikilinks+templates (SLOW?)
OnWholePage
(?<![\[\{])(?<open>[\[\{]){2,3}(?<content>[^\[\]\}\}]*)(?<close>[\]\}]){1,3}(?![\]\}])
${open}${open}${content}${close}${close}
true
false
1
None
Multiline
true
Un-nest nested comments
OnWholePage
(\<!--[^\>]*)\<!--([^\>]*)--\>([^\>]*--\>)
$1$2$3
true
false
2
None
Multiline
true
false
false
but don't duplicate
OnWholePage
(?<existing>\{\{(([Tt][Oo][Cc]|[Cc]ontents)( float)?[- ]?([Rr]ight|RIGHT)|[Rr]ightTOC)\}\}) *\n*\{\{TOC right\}\}
${existing}
true
false
1
None
Singleline
+{{tocright}} if 4+ headers*
OnWholePage
^(?<pre>[^=]*)(?=(?<!\{\{([Tt][Oo][Cc][ _-]?(float)?[ _-]?[Rr](ight|IGHT)|[Cc]ontents[ _]right|[Rr]ightTOC)\}\}\n+)=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*)
${pre}{{TOC right}}\n
==
true
false
1
None
Singleline
Rm <references/> & {{reflist}}
OnWholePage
\n(<[Rr]eferences[ ]*/>[\n]+|\{\{([Rr]ef|[Nn]ote)list(\|[^\}]*)?\}\}\n)$
true
false
1
None
Multiline
true
Rm uncommented ref cleanup tags
OnWholePage
(?:<!--[.\n]*-->)*(?<!\<!--[^\{]*){{([Rr]eferences|([Aa]d[d]?|[Bb]ad|[Cc]ite|[Cc]leanup|[Ff]ew|[Ii]mprove|[Mm]issing|[Mm]ore|[Nn]eeds( additional|more)?|[Nn]o[t]?|[Uu]n)(-| )?(cit|r|source|verif)[^\}]*|[Nn][Rr]|([Rr]ef(erence)?|[Cc]itation)[s]?[ ]?(needed|missing)?|[Rr]efim[^\}]*|[Ss]ources|[Rr]ip|\+[Rr])}}[\n]*
true
false
1
None
None
REFS/COMMENTS (placeholder)*
OnWholePage
false
false
1
None
None
true
No bold after lead
OnWholePage
(?<=^[\*=].*)(.*)
$1
true
false
3
None
Multiline
true
Indent with bullets
OnWholePage
(?<=^:*):(?=/*)
*
true
false
1
None
Multiline
true
true
Rm linkless non-parent entries
OnWholePage
^(?<stars>\*+) *[^\[\]\{\}\n]*(?!: *)$\n(?!\k<stars>\*)
true
false
1
None
Multiline
true
Add colon to linkless parent entries
OnWholePage
(?<=^\n*\*+ *)(?<text>[^\[\]\{\}\n:]+[^ :]) *(?=$\n\*+)
${text}:
true
false
1
None
Multiline
If linkless entries: (SLOW)
OnWholePage
^\*+ *[^\[\]\{\}\n]*$(?![^\<\>]*(?#Unless commented:)(?!\<!--)[^\<\>]*--\>)
true
true
1
Multiline Singleline
None
true
true
true
Except for known abbreviations
OnWholePage
(?<!\[\^\ *(?!\]\][^\[]*))(?<abbrev> (etc|al|[Ii]nc|[Ll]td|[Cc]o|[JS]r|[Pp]lc))(?!\.)(?=\W*\n)
${abbrev}.
true
false
1
None
None
(if) Rm end punctuation (SLOW?)
OnWholePage
(?<=^\*+ *)(?<text>.*[^\.\n\s]{2,})(?:\.|;|,)(?<peren>\)?) *(?=\n+)
${text}${peren}
[\.;,]\)? *\n
true
true
1
None
Multiline
true
Cupola/punc to comma (RECENT CHANGE)
OnWholePage
(?<=\*+ *)(?<term>[^,\n]+[^,\n\-–—:; ]|[^,\n]*\[\[.+\]\](|[^,\n]*?[^,\n\-–—:; ]))(?#unless term is in quotes, parens, or a link:)(?![^'"\n]*(?!")[^'"\n]*"|[^'"\n]*(?!)[^'"\n]* |[^\(\)\n]*(?!\()[^\(\)\n]+\)|[^\[\]\n]*(?!\[\[)[^\[\]\n]+\]\])(, which)?((?<!that) (is|are|was|were) | *([\–—]+|(?<!\!)--(?!\>)) *| *[:;\-] +(?=\w)|(?<=\]\]|\}\}) (?=(a|an|the) ))
${term},
true
false
1
None
None
true
Comma to semicolon in "; see x "
OnWholePage
(?<=\*+ *(?![Ff]or )[^\n]*) *(\-\-|[,;:\-–—\.]) *([Ff]or more information[,;:])? ?([Ss]ee|[Cc]f[\.]?)( also)?(?![^\<\>\!]*(?!\<!--)[^\<\>\!]*--\>)
; see
true
false
1
None
Multiline
PUNCTUATION (placeholder)
OnWholePage
false
false
1
None
None
true
true
"formerly"
OnWholePage
((which was )?formerly|which used to be)
formerly
false
false
1
None
None
true
Remove extra sentences (EXPERIMENTAL)
OnWholePage
(?<=\*+ *.*?\w{3})\. +(?<extra_sentences>\p{Lu}.*)(?=\n)
true
false
1
None
None
SHORTEN DESCRIPTIONS (placeholder)
OnWholePage
false
false
1
None
None
true
true
fti based on link**
OnWholePage
(?<=^\*+ *)(|")?\[\[(?<link>(?<main>[^\|\]]*) \((?<dabber>([^\|\]]* )?(album|book|collection|comic|EP|film|game|LP|manga|movie|musical|novel|periodical|play|(television|[Tt]\.?[Vv]\.?) program(me)?|series|show|telenovela|(?<!\w)work))\))(?!\| \k<main> \(\k<dabber>\))(\|[^\]]+)?\]\]( |")?
{{subst:fti|${link}}}
true
false
1
None
Multiline
true
ftq based on link**
OnWholePage
(?<=^\*+ *)(|")?\[\[(?<link>(?<main>[^\|\]]*) \((?<dabber>[^\|\]]*(?<=\W)(episode|single|song|story|track))\))(?!\|"\k<main>" \(\k<dabber>\))(\|[^\]]+)?\]\]( |")?
{{subst:ftq|${link}}}
true
false
1
None
Multiline
true
fti based on description (intricate)**
OnWholePage
(?<=\*+ *)(|")?(?<! )((?<islinked>\[)\[)?(?<target>[^\[\|\]\n'" ][^\[\|\]\n]*?)(?!\|[^\[\|\]\n]+ )(\]\])?(''|")?(?<to_noun>, (a(n(other)?)? )?(\d{3,4} )?([\w-]+ ?){0,5} (?<!((class|kind|sort|type|variety|composer|critic|developer|director|distributor|editor|executive|host|illustrator|narrator|presenter|producer|publisher|star|writer) of( .*)?|.* (by|from|(with)?in|of|on) .*))(album|biopic|book|chronicle|comedy|documentary|drama|EP|film|franchise|board[ \-]?game|genus|LP|magazine|movie|mural|newspaper|novel(ette|la)?|painting|(?<!(who|that|which) )play|(?<!trade|air|to )show|soundtrack|genus|(television|[Tt]\.?[Vv]\.?) (program(me)?|series)|thriller|western|(?<!t)work))(?!\w)(?!.*(?<!.*(by|featuring|including|starring).*)(act(or|ress)|anchor|camera|channel|character|comedi(an|enne)|company|composer|critic|developer|director|distributor|editor|executive|festival|film(maker|ographer)|host|illustrator|industry|narrator|organi[sz]ation|personality|presenter|producer|publisher|retailer|seller|service|star|station|store|superhero|system|theat(er|re)|tournament|vendor|writer))
{{subst:fti|${target}|nolink={{subst:#if:${islinked}|0|1}}}}${to_noun}
true
false
1
None
None
true
fti for species likely in Latin** (NEW)
OnWholePage
(?<=\*+ *)(|")?(?<! )((?<islinked>\[)\[)?(?<target>\p{Lu}\.? [^\[\|\]\n]+)(?!\|[^\[\|\]\n]+ )(\]\])?(''|")?(?<to_noun>, (a(n(other)?)? )?(\d{3,4} )?([\w-]+ ?){0,5}species(?!\w))
{{subst:fti|${target}|nolink={{subst:#if:${islinked}|0|1}}}}${to_noun}
true
false
1
None
None
true
(if) ftq based on description** (intricate)
OnWholePage
(?<=\*+ *)(|")?(?<!")((?<islinked>\[)\[)?(?<target>[^\[\|\]\n'" ][^\[\|\]\n]*?)(\]\])?( |")?(?<to_noun>, (a(n(other)?)? )?(\d{3,4} )?([\w-]+ ?){0,5}(?<!((class|kind|sort|type|variety|composer|director|host|illustrator|lyricist|narrator|producer|star|writer) of( .*)?|.* (from|in) .*))(?<!(,)? (and|or|based on|featuring) ([\w-]+ )+)(.* (episode|finale)|(episode|finale) of.*(show|series|television|[Tt]\.?[Tv]\.?|.* )|poem|single.*(album|record(?!s)|EP|LP)|(?<!album and )song(?! and album)| story(?! arc)|(?<!sound)track(?!e).*(album|record[^s]|EP|LP))(?=\s))(?! ((act(or|ress)|anthology|comedi(an|enne)|collection|composer|director|host|illustrator|lyricist|narrator|producer|star|writer)))
{{subst:ftq|${target}|nolink={{subst:#if:${islinked}|0|1}}}}${to_noun}
(episode|finale|poem|single|song|story|track)
true
true
1
None
Multiline
true
ftqi based on description** (intricate)
OnWholePage
(?<=\*+ *)["']*((?<islinked>\[)\[)?(?<episode>\p{Lu}[^\|\]]+) \((?<series>\p{Lu}[^\|\]]+)\)(\]\])?["']*(?=, (a(n(other)?)? )?(\d{3,4} )?([\w-]+ ?){0,5}episode of (the (television |[Tt]\.?[Vv]\.? )?(program(me)?|series|show) )?["'\[]*\k<series>["'\[]*)
{{subst:ftqi|${episode} (${series})|nolink={{subst:#if:${islinked}|0|1}}}}
true
false
1
None
None
LINK FORMATTING (placeholder)**
OnWholePage
false
false
1
None
None
true
Use ship prefix templates*
OnWholePage
\[\[(?<prefix>(AN|BN|EN|FN|G|GT|H|HDM|HM|HMA|HMB|HMC|HMNZ|HMQ|HMV|HNLM|HNoM|HSwM|HTM|IN|J|JD|M|NN|P|RM|ROK|RP|RS|S|SA|SM|US|USN|)S|BAP|BRP|HMT|HSC|Jsub|KRI|LÉ|MY|ORP|RFAux|RV|SMU|SV|TCG|USAT|USCGC|USRC) (?<name>[^\|\[\]\(\)]*)( \((?<code>[^\|\[\]\(\)]*)\))?(\|[^\|\]\n']+)?\]\]
{{${prefix}|${name}|${code}}}
true
false
1
None
None
true
true
true
Remove any "a/an/the" before type
OnWholePage
\(([Tt]he|[Aa]n?) (?<type>.*(callsign|code|designator|symbol|prefix|postfix|identifier|abbreviation))
(${type}
true
false
1
None
None
false
Language and country codes lowercase and in quotes*
OnWholePage
(?<=\(.*(ISO 639(-\d( and -\d)?)?|language|country).*(code|identifier)s? )(?<code>\{\{subst:uc:\{\{subst:PAGENAMEBASE\}\}\}\})(?=\))
"{{subst:lc:{{PAGENAMEBASE}}}}"
true
false
1
None
None
false
Substitute page name and case modifier
OnWholePage
(?<=\{\{)(?<template>uc:|lc:|PAGENAMEBASE)
subst:${template}
true
false
1
None
None
CODE entries - move target to start and...**
OnWholePage
(?<=^\*+ *)((?<code>[^,\s]*), )?(?:[Tt]he|[Aa]n)? ?(?<type>(\[\[|\{\{)?([^,\n]* )?(acronym|callsign|code(name)?|designator|symbol|prefix|postfix|identifier|abbreviation)s?(\]\]|\}\})?) (?:for|of) (?:the )?(?<item>[^\n]*[^\s])(\s)?$
${item} (${type} {{subst:#if:${code}|"${code}"|{{subst:#ifeq:${type}|abbreviation|"{{subst:PAGENAMEBASE}}"|{{subst:uc:{{subst:PAGENAMEBASE}}}}}}}})
true
false
1
None
Multiline
true
Alternate name - move target to start (NEW)**
OnWholePage
(?<=\*+ *)[Aa]n(other)?( alternat(?<iv>iv)?e)? (?<noun>name|title|designator|code) for (?<target>.*)
${target}, alternat${iv}ely called {{subst:uc:{{subst:PAGENAMEBASE}}}})
true
false
1
None
None
true
"from work " before "by [artist]" (NEW)
OnWholePage
(?<=\*+.+)((?<by>by .*[^, ]),? (?<ident>[Aa]n? .*[^, ]),?|(?<ident>[Aa] (song|poem|single|(short )?story|track)),? (?<by>by .*[^, ]),?) from (?<pospron>his|her|their)? ?(the )?(?<work>.*\[\[.*\]\].*)
${ident} from {{subst:if:${pospron}|the |}}${work}, ${by}
true
false
1
None
None
true
"[artist]'s work " to "work by [artist]" (NEW)
OnWholePage
(?<=\*+.+)from (?<artist>.*)'s (?<work>.*\[\[.+\]\].*)
from the ${work} by ${artist}
true
false
1
None
None
true
"In [field], item " to "Item , in [field]" (NEW)
OnWholePage
(?<=\*+ *)[Ii]n (?<field>[^,\n]*), (?<entry>\[\[[^\]\n]*\]\]) (is|are|was|were)
${entry}, in ${field},
true
false
1
None
None
WORD ORDER (placeholder)**
OnWholePage
false
false
1
None
None
true
Don't pipe away disambiguators
OnWholePage
(?<=\*+ *)\[\[(?<base>[^\]\|\)\n]+) (?<dabber>\([^\]\|\n]+\)) *\| *\k<base>\]\]
${base} ${dabber}
true
false
1
None
IgnoreCase
true
true
Remove extraneous bold
OnWholePage
(==[^\n']*)'''([^\n']*==)
$1$2
true
false
1
None
None
Pseudo-headers to real headers**
OnWholePage
(?#Negative lookbehind here to ignore multiline comments made rule run very slowly)(?<=(?<parentlevel>(?<=\n=)=+).*?\n|^(?<parentlevel>)([^=]?[^\n]*\n)*?)(?!\<!--)(; ?|(In (the )?)?'*|)(?<title>[^\*;'\n=\{ ][^\n]*[^\n=':;\.\-–— ])(?<! (refer(s)? to|include(s)?|mean(s)?|is|are|was|were)(?!\w)[^\n]*)('{2,5})?[:;\-–— ]*('{2,5})?(?=(\n\(.*\))*\n+\*)
==${parentlevel}{{subst:ucfirst:${title}}}${parentlevel}==
true
false
1
None
Singleline
true
true
Abbreviate US (except in links and headers)
OnWholePage
(?<!==.*)((?<U>U\.?)(?<S>S\.?)A\.?|(?<U>United )(?<S>States)( of America)|(?<U>U)nited (?<S>S)tates(?! v.))(?![^\[\]]*(?!\[\[)[^\[\]]*\]\])
${U}${S}
true
false
29
None
None
true
Abbreviate UK (except in links and headers)
OnWholePage
(?<!==.*)((?<U>U)\.(?<K>K)\.?|(?<U>U)nited (?<K>K)ingdom(?! of))(?![^\[\]]*(?!\[\[)[^\[\]]*\]\])
${U}${K}
true
false
1
None
None
true
Replace c. in vital years w/tooltip template
OnWholePage
(?<=[\(\-–—] ?)(\[\[circa\|)?(c|ca|circa|~|approx(imately)?)\.?(\]\])?(?= ?\d)
{{circa}}
true
false
1
None
None
true
Replace fl. in vital years w/tooltip template
OnWholePage
(?<=\( ?)(\[\[floruit\|)?(fl|flr|flor)\.?(\]\])?(?= ?\d)
{{floruit}}
true
false
1
None
None
COMMON ABBREVIATIONS (placeholder)
OnWholePage
false
false
1
None
None
true
true
LC certain words at start of description (NEW)
OnWholePage
(?<=, )(A|An|The)(?= )(?![^\[\]]*(?!\[\[)[^\[\]]*\]\])
{{subst:lcfirst:$1}}
true
false
1
None
None
true
UC first letter of first word of entry**
OnWholePage
(?<=^[=;\*]+ *)(\[\[([^\n\|\]]*\|)?)?(?<letter>\p{Ll})(?!(?#punct)[.,;:\*]|(?#single letter not a)(?<!a) |(?#French)(?<=[dl])'|(?#Arabic)(?<=a)l[- ]|(?#Greek)(?<=[αβγδεζηθικλμνξοπρσςτυφχψω]).|(?#hidden)[^\n\|\[\]]*\|)
$1{{subst:uc:${letter}}}
true
false
1
None
Multiline
CAPITALIZATION (placeholder)
OnWholePage
false
false
1
None
None
true
true
(if) Unlink third+ links in entry**
OnWholePage
(?<=\*+ *.*[^\[\{\n]*)(?<link1>\[\[(?<target1>[^\|\]]+)(\|[^\]]*)?\]\]|\{\{(?<template1>(AN|BN|EN|FN|G|GT|H|HDM|HM|HMA|HMB|HMC|HMNZ|HMQ|HMV|HNLM|HNoM|HSwM|HTM|IN|J|JD|M|NN|P|RM|ROK|RP|RS|S|SA|SM|US|USN|)S|BAP|BRP|HMT|HSC|Jsub|KRI|LÉ|MY|ORP|RFAux|RV|SMU|SV|TCG|USAT|USCGC|USRC)\|(?<target1>[^\}]+)\}\})(?<inter>[^\[\n]*)(?<![Ss]ee |\<!--(?!.*--\>.*).*)(?<link2>\[\[(?<target2>[^\|\]]+\|)?(?<display2>[^\]]*)\]\]|\{\{(?<template2>(AN|BN|EN|FN|G|GT|H|HDM|HM|HMA|HMB|HMC|HMNZ|HMQ|HMV|HNLM|HNoM|HSwM|HTM|IN|J|JD|M|NN|P|RM|ROK|RP|RS|S|SA|SM|US|USN|)S|BAP|BRP|HMT|HSC|Jsub|KRI|LÉ|MY|ORP|RFAux|RV|SMU|SV|TCG|USAT|USCGC|USRC)\|(?<target2>[^\}]+)\}\})(?!\<!--[acceptable|OK|keep link].*--\>)(?<rest>[^\n]*)
${link1}${inter}{{subst:#ifexist:${template1} ${target1}|{{subst:trim|1=${template2} ${display2}}}|${link2}<!--keep link only if first link red-->}}${rest}
(?<=\*+ *.*[^\[\{\n]*)(\[\[|\{\{)[^\[\{\n]+\[\[[^\[\{\n]+(\[\[|\{\{)
true
true
4
None
None
(if) Unlink 2nd link in entry (intricate)**
OnWholePage
(?<=\*+ *.*[^\[\{\n]*)(?<link1>\[\[(?<target1>[^\|\]]+)(\|[^\]]*)?\]\]|\{\{(?<template1>(AN|BN|EN|FN|G|GT|H|HDM|HM|HMA|HMB|HMC|HMNZ|HMQ|HMV|HNLM|HNoM|HSwM|HTM|IN|J|JD|M|NN|P|RM|ROK|RP|RS|S|SA|SM|US|USN|)S|BAP|BRP|HMT|HSC|Jsub|KRI|LÉ|MY|ORP|RFAux|RV|SMU|SV|TCG|USAT|USCGC|USRC)\|(?<target1>[^\}]+)\}\})(?<inter>[^\[\n]*)(?<![Ss]ee |\<!--(?!.*--\>.*).*)(?<link2>\[\[(?<target2>[^\|\]]+\|)?(?<display2>[^\]]*)\]\](?<suffix2>\w*)|\{\{(?<template2>(AN|BN|EN|FN|G|GT|H|HDM|HM|HMA|HMB|HMC|HMNZ|HMQ|HMV|HNLM|HNoM|HSwM|HTM|IN|J|JD|M|NN|P|RM|ROK|RP|RS|S|SA|SM|US|USN|)S|BAP|BRP|HMT|HSC|Jsub|KRI|LÉ|MY|ORP|RFAux|RV|SMU|SV|TCG|USAT|USCGC|USRC)\|(?<display2>[^\}]+)\}\})(?!\<!--.*[acceptable|ok|OK|keep|second|link].*--\>)(?<rest>[^\n]*)
${link1}${inter}{{subst:#ifexist:${template1} ${target1}|{{subst:trim|1=${template2} ${display2}${suffix2}}}|${link2}<!--keep link only if first link red-->}}${rest}
(?<=\*+ *.*[^\[\{\n]*)(\[\[|\{\{)[^\[\{\n]+(\[\[|\{\{)
true
true
1
None
Multiline
false
false
(if) Unlink third+ links in entry**
OnWholePage
(?<=\*+ *.*[^\[\{\n]*)(?<link1>\[\[(?<target1>[^\|\]]+)(\|[^\]]*)?\]\]|\{\{(?<ship_type1>[\p{L}/]{2,6})\|(?<target1>[^\}]+)\}\})(?<inter>[^\[\n]*)(?<![Ss]ee |\<!--(?!.*--\>.*).*)(?<link2>\[\[(?<target2>[^\|\]]+\|)?(?<display2>[^\]]*)\]\]|\{\{(?<ship_type2>[\p{L}/]{2,6})\|(?<target2>[^\}]+)\}\})(?!\<!--[acceptable|OK|keep link].*--\>)
${link1}${inter}{{subst:#ifexist:${ship_type1} ${target1}|{{subst:trim|1=${ship_type2} ${display2}}}|${link2}<!--keep link only if first link red-->}}
(?<=\*+ *.*[^\[\{\n]*)(\[\[|\{\{)[^\[\{\n]+\[\[[^\[\{\n]+(\[\[|\{\{)
true
true
4
None
None
(if) Unlink 2nd link in entry (simplified)**
OnWholePage
(?<=\*+ *.*[^\[\{\n]*)(?<link1>\[\[(?<target1>[^\|\]]+)(\|[^\]]*)?\]\]|\{\{(?<ship_type1>[\p{L}/]{2,6})\|(?<target1>[^\}]+)\}\})(?<inter>[^\[\n]*)(?<![Ss]ee |\<!--(?!.*--\>.*).*)(?<link2>\[\[(?<target2>[^\|\]]+\|)?(?<display2>[^\]]*)\]\]|\{\{(?<ship_type2>[\p{L}/]{2,6})\|(?<target2>[^\}]+)\}\})(?!\<!--[acceptable|OK|keep link|2nd|second].*--\>)
${link1}${inter}{{subst:#ifexist:${ship_type1} ${target1}|{{subst:trim|1=${ship_type2} ${display2}}}|${link2}<!--keep link only if first link red-->}}
(?<=\*+ *.*[^\[\{\n]*)(\[\[|\{\{)[^\[\{\n]+(\[\[|\{\{)
true
true
1
None
Multiline
true
true
(if) 30+ entries in a row**
OnWholePage
(?<=\{\{[Dd]isambiguation cleanup.*)\}\}\<
|mosdab=H}}<
(?<!=* *[Ss]ee also ?:? *=*\n+)(\*+.*\n){30,}
true
true
1
None
None
(if) 13+ entries in a row*
OnWholePage
(?<=\n+)(\n\{\{[Dd](ab|big|is(am)?(b)?(ig)?(uation)?( page)?(?<tags>(\|[^\|]+)*)\}\})|(?<specialtag>\n{\{([Hh]n|[Gg]eo)dis[\|]?[^\}]*\}\}))(?![^\n])
${specialtag}\n{{disambiguation cleanup${tags}|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}<!--May require further organization; see WP:LONGDAB -->
(?<!=* *[Ss]ee also ?:? *=*\n+)(\*+.*\n){13,}
true
true
1
None
IgnoreCase
true
true
true
but don't duplicate
OnWholePage
(?<existing>\{\{(([Tt][Oo][Cc]|[Cc]ontents)( float)?[- ]?([Rr]ight|RIGHT)|[Rr]ightTOC)\}\}) *\n*\{\{TOC right\}\}
${existing}
true
false
1
None
Singleline
+{{tocright}} if 4+ headers*
OnWholePage
^(?<pre>[^=]*)(?=(?<!\{\{([Tt][Oo][Cc][ _-]?(float)?[ _-]?[Rr](ight|IGHT)|[Cc]ontents[ _]right|[Rr]ightTOC)\}\}\n+)=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*=[=]+.*)
${pre}{{TOC right}}\n
true
false
1
None
Singleline
true
No TOC after first header (NEW 22-01-05)
OnWholePage
(?<=(=[=]+.*=[=]+.*))\{\{([Tt][Oo][Cc][ _-]?(float)?[ _-]?[Rr](ight|IGHT)|[Cc]ontents[ _]right|[Rr]ightTOC)\}\}\n
true
false
1
None
Singleline
true
Remove empty sections
OnWholePage
(==+).*\1\s*\n(?=\1(?!=)|\{\{.*\}\}(?!\s*\n\*))
true
false
1
None
None
true
Rm ==References==, ==Notes==, and ==External links==
OnWholePage
^(=+|;) *([Rr]eference|[Nn]ote|([Ee]xternal )?[Ll]ink)[s]? *=*\n*$
true
false
1
None
Multiline
true
true
If no other sections, remove ==Other uses==
OnWholePage
(?<!==.*==.*)(== *Other uses *==\n)
true
false
1
None
Singleline
true
true
Merge multiple "Other uses" sections
OnWholePage
(?<=== *[Oo]ther( [Uu]ses)? *==\n*)(?<entries>(\n\*+ *[^\n]+)+)\n*== *[Oo]ther( [Uu]ses)? *==\n*
${entries}\n
true
false
1
None
Singleline
true
Delete "Other uses" header if first section
OnWholePage
(?<!.*==.*)== *[Oo]ther( [Uu]ses)? *==\n
true
false
1
None
Singleline
(if) L2 orphans to "other uses"
OnWholePage
(?<!.*==.*)\n*(?<orphans>(\*+ *[^\n]+\n)+)\n*(?<regular_sections>(\{\{.*\}\})?(\n*==+ *(?! *(\{\{subst:ucfirst:)?([Ss]ee|[Pp]eople))[^\n]+ *==+\n*(\n\*+ *[^\n]+)*)+?\n)\n*(?<people_see_also>(\n*== *(\{\{subst:ucfirst:)?([Ss]ee [Aa]lso|[Pp]eople[ \w\}]*) *==\n*(\n\*+ *[^\n]+)+)+\n){0,2}(?=\n*\{\{.*[Dd](AB|ab|big|is(am(b(ig(uation( page)?)?)?)?)?||))
\n\n${regular_sections}\n==Other uses==\n${orphans}\n\n${people_see_also}
{{hndis
true
false
1
None
Singleline
true
(if) L3+ orphans to OU in section*
OnWholePage
(?<parent>(?<halfhead>={2,})(?<headname>[^=\n]+)\k<halfhead>\n+)(?<orphans>(\*+.+\n)+)\n*(?<subsections>(\n*\k<halfhead>=[^=\n]+=\k<halfhead>\n+(^\*+.+$\n)+)+)(?=\n*(\k<halfhead>[^=]|\{\{))
${parent}\n${subsections}\n${halfhead}=Other {{subst:#ifeq:${headname}|Places||uses in }}{{subst:lc:${headname}}}=${halfhead}\n${orphans}
===
true
false
1
None
Multiline
true
(if) Add header on hndis orphans (original)
OnWholePage
(?<!.*==.*)\n*(?<orphans>\*+.+)\n*(?<regular_sections>(\{\{.*\}\})?(\n*== *(?! *([Ss]ee|[Pp]eople))[^\n]+ *==\n*(\n\*+ *[^\n]+)+)+?\n)\n*(?<people_see_also>(\n*== *([Ss]ee [Aa]lso|[Pp]eople[ \w]*) *==\n*(\n\*+ *[^\n]+)+)+\n){0,2}(?=\n*\{\{.*[Dd](AB|ab|big|is(am(b(ig(uation( page)?)?)?)?)?||))
\n\n==People==\n${orphans}${regular_sections}\n\n${people_see_also}
{{hndis
true
false
1
None
Singleline
false
(if) Add header on hndis orphans (simpler)
OnWholePage
(?<!==.*)(?<orphans>\*+.+)\n*(?===(?! *[Ss]ee| *[Pp]eople))
==People==\n${orphans}
{{hndis
true
false
1
None
Singleline
true
Merge multiple "Other uses" sections
OnWholePage
(?<=== *[Oo]ther( [Uu]ses)? *==\n*)(?<entries>(\n\*+ *[^\n]+)+)\n*== *[Oo]ther( [Uu]ses)? *==\n*
${entries}\n
true
false
1
None
Singleline
true
Delete "Other uses" header if first section
OnWholePage
(?<!.*==.*)== *[Oo]ther( [Uu]ses)? *==\n
true
false
1
None
Singleline
MANAGE ORPHANS AND OUs (placeholder)
OnWholePage
false
false
1
None
None
true
Format ==See also==
OnWholePage
\n+[=\*;]{0,6}(?<space> ?)([Ss]ee )?[Aa]lso\W{0,6}\n+
\n\n==${space}See also${space}==\n
true
false
1
None
None
true
true
"Other USES (in)"
OnWholePage
(?<=[;=])Other ?(thing|item|entr(y|ies)|article|page|topic)?s?(?<dab> in .*)(?=[:=\n])
Other uses${dab}
true
false
1
None
Multiline
true
Standardize "Places" section name
OnWholePage
(?<===+ *)(Geography|Localities)(?= *==+)
Places
true
false
1
None
None
true
Rename culture sections
OnWholePage
(?<===+ *)(In )?([Pp]opular )?([Cc]ulture|[Ss]ociety)(?= *==+)
Arts and media
true
false
1
None
None
true
Avoid "print"
OnWholePage
(?<===+ *)Print(ed)?( media)?(?= *==+)
Literature
true
false
1
None
None
STANDARDIZE SECTION NAMES (placeholder)
OnWholePage
false
false
1
None
None
If sections are present:*
OnWholePage
==
false
false
1
None
None
true
No triple newlines
OnWholePage
\n{3,}
\n\n
true
false
1
None
None
If page is a dab:
OnWholePage
\{\{(d(ab|big|isam)|[^\[\]\{\}\|]{1,30}d(ab|big|is(?!t))|personal name|dmbox)
false
true
1
IgnoreCase
None
false
false
Sandbox
OnWholePage
false
false
1
None
None
false
(if) Only two entries (NEW)
OnWholePage
(?<=\n+)(\n\{\{[Dd](ab|big|is(am)?(b)?(ig)?(uation)?( page)?\}\})|(?<specialtag>\n{\{([Hh]n|[Gg]eo)dis[\|]?[^\}]*\}\}))(?![^\n])
${specialtag}\n{{disambiguation cleanup|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|mosdab=F}}<!--Only two entries; if one is primary, consider redirecting and leaving a hatnote per WP:TWODABS-->
(?<=^[^\*]*)\*+ *.*\n\*+ *.*(?=[^\*]*$)
true
true
1
None
None
false
Don't lead with a/an/the (too broad)
OnWholePage
(?<=\*+ *)(([Aa]n?|[Tt]he) )
true
false
1
None
None
false
ENTRY ORDER (IN PROGRESS - DOABLE?)
OnWholePage
\* *['"]*(\[\[([^\]\|]*\|)?)?(\{\{([^\}\|]*\|)?)?(?<name>.*)
{{subst:#ifeq:${name}|{{subst:PAGENAMEBASE}}||}}
true
false
1
None
None
false
Make regex readable
OnWholePage
(?<groupcode>(?<!\\)(\((?!\?)|\(\?(\:|\<?[=!]|\<[^\>]*?\>))|(?<!\\)\||(?<!\\)\)([\*\+\?]|\{[\d,]+\})?)
\n${groupcode}\n
true
false
1
None
None
SANDBOX (placeholder)
OnWholePage
false
false
1
None
None
false
true
false
false
false
false
0
0
false
false
false
false
false
true
2
10
0
false
false
false
30
Dab cleanup+style sync per WP:DDD etc.
Dab cleanup+style sync per WP:DDD etc.
<!--second link ok-->
dababy
false
false
true
false
true
false
false
true
true
false
true
false
false
false
0
false
true
2
false
true
false
true
false
true
false
false
10
Courier New
false
false
false
false
false
true
false
false
false
false
true
true
true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
true
false
false
true
false
false
true
true
false
false
false
false
false
false
false
false
false
false
false
false
false
false
true
false
false
false
false
C# 3.5
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip)
{
Skip = false;
Summary = "test";
ArticleText = "test \r\n\r\n" + ArticleText;
return ArticleText;
}
false
false
true
false
20
true
true
false
false
false
0
0
0
0