2016-12-20 4 views
0

Ich habe einen Text wie diesenRegulärer Ausdruck das letzte Vorkommen in der Teilkette übereinstimmen

words words words tag a words words tag a words tag b words time words words tag c words time 

Ich weiß nicht, was a, b und c. Was ich einfangen will, ist „tag b words timetag c words time "und andere wie es. So war mein Versuch regexp tag[\w ]+?time. Aber das passt

tag a words words tag a words tag b words time 

Wie kann ich das letzte Vorkommen von Tag erfassen? Ich bin mit Matlab so ., wenn es eine nicht regexp Lösung dieses Problems ist, die zu groß sein würde

+0

https://in.mathworks.com/help/matlab/ref/strfind.html?requestedDomain=www.mathworks.com #responsive_offcanvas für ohne Regex. – Garfield

+0

@LonelyPlanet können Sie das hier nicht tun, wie ich nicht weiß, was a/b/c sind, wie ich in der Frage erwähnt –

Antwort

1

Dies sollte tun:

tag\s*[\w]\s*[\w]+\s*time 
+0

Ich habe es auf regex101.com versucht, und das stimmt überhaupt nichts überein. –

+0

@ rick_2047 bearbeitet, behoben – MoustafaS

+1

Wow! das funktioniert. Benötigte wenig Änderung, wenn ich es auf das wirkliche Problem anwandte, aber das ist eine gute allgemeine Lösung. Vielen Dank –

0

können Sie diese Regex verwenden:

/tag [a-z]{4} [\w]+ time$/ 

Hier ist ein funktionierendes Beispiel (in Javascript, aber wenn Sie PCRE verwenden sollte es funktionieren in Matlab zu).

s1 = "words words words tag a words words tag a words tag b words time words words tag cccc words time" 
 
re = /tag [a-z]{4} [\w]+ time$/ 
 
console.log(s1.match(re))

+0

Ich dachte, es wäre klar, dass "Worte" nur ein Dummy ist. Außerdem wird nur das letzte Vorkommen in der gesamten Zeichenfolge erfasst. –

+0

also beide c und wörter sind dumm? Was könnte dort hingehen? Wie definierst du diese Zeichen/Wörter? – Dekel

+0

Definieren Sie diese? Ich weiß nicht genau, was du fragst. Sie sind nur Wörter in einer Textdatei. –

Verwandte Themen