Hľadám výraz regulárny výraz, ktorý sa zameriava na akýkoľvek pomenovaný atribút HTML attrName
aby som to mohol nahradiť attr
ale vo vnútri <Highlight></Highlight>
iba značky.
Príklad bloku, na ktorý by som zacielil, je:
<Highlight attrName="html">
{"
<div attrName="input action">
nt<input type="text" name="name" placeholder="Search..."/>
nt<a attrName="button outlined">Search</a>
n</div>
"}
</Highlight>
Zatiaľ som práve prišiel s regexom <Highlights*(attrName)s*
ale iba to zacieľuje <Highlight attrName
odpovede:
1 pre odpoveď č. 1Okrem toho, že analýza takého kódu pomocou regexu nie je vždy dobrý nápad, pravdepodobne by ste potrebovali silnejšiu chuť regexu, ako poskytuje editor Atom. Notepad ktorý podporuje PCRE.
Tu môžete použiť G
kotva na reťazové zápalky od začiatku alebo od určitého bodu.
(?s)(?:<Hi[^>]*>|G(?!^))(?:(?!</Hi).)*?KattrName
- Na
(?s)
vlajka je, aby bodka zodpovedala aj novým riadkom. (?:<Hi[^>]*>|G(?!^))
prvá časť vo vnútri nezachytávacia skupina je nastaviť, kde sa zápas začína. bez(?!^)
negatívny pozerať sa dopreduG
by sa tiež zhodoval so začiatkom reťazca.(?:(?!</Hi).)*?
druhá časť sa zhoduje s ľubovoľným počtom znakov bez preskakovania</Hi
- použitím negatívneho hľadáčika a - vynulovať zhodu pomocouK
predattrName
.
0 pre odpoveď č. 2
Toto nájde atribút: (?<=<[^<]+)attrName(?=s*=[^>]+>)
Nájdete značky HTML, v ktorých sa vyskytuje atribút: <[^<]+attrNames*=[^>]+>