Difference between revisions of "Help:Regular expressions"
From Nookipedia, the Animal Crossing wiki
m |
SuperHamster (talk | contribs) (→Examples: +example for moving attributes into existing style code) |
||
Line 31: | Line 31: | ||
* Prepend an <code>html</code> selector to every CSS property in a stylesheet ([https://stackoverflow.com/a/37695196 source] on StackOverflow by [https://stackoverflow.com/users/6438812/ryan-worth Ryan Worth]): | * Prepend an <code>html</code> selector to every CSS property in a stylesheet ([https://stackoverflow.com/a/37695196 source] on StackOverflow by [https://stackoverflow.com/users/6438812/ryan-worth Ryan Worth]): | ||
− | :Find <code><nowiki>(^(?:\s|[^@{])*?|[},]\s*)(\/\/.*\s+|.*\/\*[^*]*\*\/\s*|@media.*{\s*|@font-face.*{\s*)*([.#]?-?[_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^}]*{)</nowiki></code> | + | :Find: <code><nowiki>(^(?:\s|[^@{])*?|[},]\s*)(\/\/.*\s+|.*\/\*[^*]*\*\/\s*|@media.*{\s*|@font-face.*{\s*)*([.#]?-?[_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^}]*{)</nowiki></code> |
:Replace: <code><nowiki>$1$2html $3</nowiki></code> | :Replace: <code><nowiki>$1$2html $3</nowiki></code> | ||
+ | |||
+ | * Move <code>width</code> attributes into existing <code>style</code> attribute (PHP): | ||
+ | :Find: <code><nowiki> width="(.*)\%"(.*)style="</nowiki></code> | ||
+ | :Replace: <code><nowiki>$2style="width: $1%; </nowiki></code> | ||
+ | :''Notes'': Note the space at the start of the find and the end of the replace. May mess up if multiple elements are on the same line. | ||
{{Nookipedia}} | {{Nookipedia}} |
Revision as of 22:52, June 30, 2021
A regular expression (regex) is a sequence of characters defining a search pattern. On the wiki, they are commonly used for finding and replacing text through Special:ReplaceText (staff only), AutoWikiBrowser, Pywikibot, or Scribunto/Lua modules.
Each tool/programming language uses its own ruleset for regular expressions:
- Special:ReplaceText supports a small subset (
( ) . * + ? [ ]
) of the PHP and MySQL/PostgreSQL regular-expression set. - AutoWikiBrowser uses .NET regular expressions.
- Pywikibot uses Python regular expressions.
- Lua/Scribunto pattern are similar to regular expressions, but not identical. See this page for a list of differences.
If you need help with regular expressions, you may post on the talk page, or join the Nookipedia Discord and ask in the #wiki-tech channel.
Testing
There are several online tools to test our patterns. A small selection is listed below.
Examples
Below is a list of examples of regular expressions that may help you on the wiki. Feel free to expand this list.
- Replacing instances of
{{I|Item Name}}
with{{I|Item Name|New Horizons}}
(Python):
- Find:
{{I\|(?!.*\|)(.*?)}}
- Replace:
{{I|\1|New Horizons}}
- Matching a multi-line Foreignname template and adding a new "See also" section after it (Python):
- Find:
{{Foreignname([\s\S]*?\n}})
- Replace:
{{Foreignname\1\n\n==See also==
- Add
f#-img
parameters after eachfurn#
parameter in instances of house templates; the template takes in the furniture name as a parameter and returns a filename (AWB):
- Find:
\|furn([1-9]\d?)= (.*)
- Replace:
|furn$1= $2\n|f$1-img= {{subst:Example|$2}}
- Prepend an
html
selector to every CSS property in a stylesheet (source on StackOverflow by Ryan Worth):
- Find:
(^(?:\s|[^@{])*?|[},]\s*)(\/\/.*\s+|.*\/\*[^*]*\*\/\s*|@media.*{\s*|@font-face.*{\s*)*([.#]?-?[_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^}]*{)
- Replace:
$1$2html $3
- Move
width
attributes into existingstyle
attribute (PHP):
- Find:
width="(.*)\%"(.*)style="
- Replace:
$2style="width: $1%;
- Notes: Note the space at the start of the find and the end of the replace. May mess up if multiple elements are on the same line.