/ / Zacieľte na atribút v značkách HTML pomocou regónu - javascript, html, regex, atom-editor

Zacieľte atribút v rámci značiek HTML s regex - javascript, html, regex, atom-editor

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ď č. 1

Okrem 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 dopredu G 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 pomocou K pred attrName.

Tu je ukážka na regex101


0 pre odpoveď č. 2

Toto nájde atribút: (?<=<[^<]+)attrName(?=s*=[^>]+>)

Nájdete značky HTML, v ktorých sa vyskytuje atribút: <[^<]+attrNames*=[^>]+>