regulären Ausdruck für html-tags mit bestimmten Attributen
Ich bin versucht, alle HTML-tags nicht über das Attribut "Bezeichnung" oder "Reihe"
hier ist Beispiel-HTML-format
<span class="inline prewrap strong">DATE:</span> 12/01/10
<span class="inline prewrap strong">MR:</span> 1234567
<span class="inline prewrap strong">DOB:</span> 12/01/65
<span class="inline prewrap strong">HISTORY OF PRESENT ILLNESS:</span> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum
<span class="inline prewrap strong">MEDICATIONS:</span> <span term="Advil" range="true">Advil </span>and Ibuprofen.
Meine regex ist: <(.*?)((?!\bterm\b).)>
Leider passt alle tags...Es wäre schön, wenn der innere text wäre nicht abgestimmt, wie ich brauche, heraus zu filtern, werden alle tags außer denen mit, dass bestimmtes Attribut.
Können Sie erläutern, ein wenig mehr über das, was Sie zu tun versuchen? Sind Sie versuchen, um herauszufiltern, alle tags, die habe ein "Begriff" oder eine "range" - Attribut oder alle die tags ohne ein "Begriff" oder eine "range" - Attribut?
ich versuche heraus zu filtern, werden alle tags, die NICHT mit "Begriff" und "range" - Attribut. Im Grunde, nachdem ich ein replace() nur die tags, die Attribute sollten immer noch da sein.
ich versuche heraus zu filtern, werden alle tags, die NICHT mit "Begriff" und "range" - Attribut. Im Grunde, nachdem ich ein replace() nur die tags, die Attribute sollten immer noch da sein.
InformationsquelleAutor user253530 | 2012-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn regex ist Ihre Sache, dafür, das funktioniert für mich.
(Hinweis - filterring Kommentare, doctype und anderen Einrichtungen ist nicht im Lieferumfang enthalten.
Andere Warnungen; - tags eingebettet im Skript, Kommentare und andere Dinge.)
span tag (w/attr) keine Fachsemester|Bereich attrs
alle tag (w/attr) keine Fachsemester|Bereich attrs
alle tag (w/o attr) keine Fachsemester|Bereich attrs
Update
Alternative zur Verwendung (?>) konstruieren
Unter regex sind ' s nicht-'term| - Bereich'-Attribute
Flags = (g)global-und (s)dotall
span-tag w/attr
link: http://regexr.com?2vrjr
regex:
<span(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)(?:term|range)\s*=)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+>
jeden tag w/attr
link: http://regexr.com?2vrju
regex:
<[A-Za-z_:][\w:.-]*(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)(?:term|range)\s*=)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+>
jeden tag w/attr oder wo/attr
link: http://regexr.com?2vrk1
regex:
<(?:[A-Za-z_:][\w:.-]*(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)(?:term|range)\s*=)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+|/?[A-Za-z_:][\w:.-]*\s*/?)>
'match jeden tag, außer denen, die term="gelegentlich",'
link: http://regexr.com?2vrka
<(?:[A-Za-z_:][\w:.-]*(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)term\s*=\s*(["'])\s*occasionally\s*\1)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+|/?[A-Za-z_:][\w:.-]*\s*/?)>
3 Probleme; 1.Sie verließ Leerzeichen in der regex-2.flag dotall nicht festgelegt ist, 3.dieser Motor mag es nicht, possesive form
(?>exp)
. Hinzugefügt alternative regex(s) und links in meinem update.InformationsquelleAutor sln
Ich denke, Sie sollten verwenden Sie einen HTML-parser um dieses problem zu lösen. Erstellen von eigenen regulären Ausdruck ist möglich, aber fehlerhaften sicher. Stell dir vor, dein code enthält solcher Ausdruck
Ist es auch gültig, aber um alle möglichen Felder und TAB-Zeichen im regulären Ausdruck wäre nicht einfach und würde die Tests erfordern, bevor Sie sicher sein können, dass es funktioniert, wie es erwartet wird.
<[\s]*?span[^>]*?Klasse[\s]*?=\s*([\'\"\\s])(.*?)\1[^>]*?> bekommt, um die meisten gültigen html-Code, wenn Sie suchen für einen bestimmten tag -> Klasse Gruppe 2 werden entsprechend Ihrer Klasse name und Gruppe 1 wird das Trennzeichen (', ", Raum) Zum Beispiel, alle diese: regexr.com?34l34
^ regexr.com?34l3a fängt mehr oddball Anwendungsfälle.
InformationsquelleAutor ka3ak
Dies zu tun, was Sie wollen. Es ist geschrieben für ein Perl-Programm, und das format kann sich abhängig davon unterscheiden, welche Sprache Sie verwenden
Der folgende code veranschaulicht dieses Muster in einem Perl-Programm
AUSGABE
Sie ursprünglich nicht erwähnt nichts über die Verwendung der Muster-Ersetzungen durchgeführt werden sollen. Bitte zeigen Sie Ihre Lösung als Antwort hier.
InformationsquelleAutor Borodin
<tag attribute1="value" term="text">
nicht zu, ich Schaffe das <tag term="text"> so weiß ich genau, was ich Suche. es gibt keine chance, dass ein weiteres Attribut, wird entlang der "Begriff" - Attribut.
InformationsquelleAutor user253530
Ich denke, dass dieser regex funktioniert einwandfrei.
Diese regex wird, wählen Sie style-Attribut eines HTML-Tags.
Sie können dies überprüfen, auf https://regex101.com
style
ist das erste Attribut. Es wird auch nicht funktionieren, wenn das tag name enthältstyle
.InformationsquelleAutor SoftWeb Tuts