2016-04-11 18 views
0

Ich versuche, eine Textdatei zu suchen, die ein Ergebnis zurückgibt, wenn mehr als ein Wort in dieser Zeile gefunden wird. Ich sehe das nicht in der Dokumentation erklärt und habe verschiedene Loops ohne Erfolg ausprobiert.mIRC Suche nach mehreren Wörtern in Textdatei

Was würde Ich mag es, etwas zu tun, ähnlich wie diese:

$read(name.txt, s, word1|word2|word3) 

oder sogar so etwas wie folgt aus:

$read(name.txt, w, word1*|*word2*|*word3) 

Ich weiß nicht RegEx, die gut so ich dies unter der Annahme, kann damit gemacht werden, aber ich weiß nicht, wie ich das machen soll.

+0

Als regex wäre dies etwas wie '/ (* (word1 | word2 | word3). *) {2,} /', nicht sicher, wie das in mIRC funktionieren würde. – apokryfos

+0

das funktioniert nicht in mIRC, aber ich werde herumspielen und sehen, ob ich das in mIRC-Syntax konvertieren kann –

+0

Wie viele Wörter sind da? – rock321987

Antwort

0

Die Dokumentation im Client selbst ist gut, aber ich empfehle auch diese Seite: http://en.wikichip.org/wiki/mirc. Und mit Ihrem Problem gibt es einen schönen Artikel: http://en.wikichip.org/wiki/mirc/text_files

Alle Informationen werden von dort übernommen. Also Credits für Wikichip.

alias testForString { 
    while ($read(file.txt, nw, *test*, $calc($readn + 1))) { 
    var %line = $v1 
    ; you can add your own words in the regex, seperate them with a pipe (|) 
    noop $regex(%line,/(word1|word2|word3|test)/)) 
    echo -a Amount of results: $regml(0) 
    } 
} 

$readn ist eine Kennung, die die Linie zurückkehrt, dass $read() abgestimmt. Es wird verwendet, um nach dem Muster in der nächsten Zeile zu suchen. Was ist in diesem Fall test.

Im obigen Code beginnt $readn bei 0. Wir verwenden $calc(), um bei Zeile 1 zu beginnen. Jedes Spiel $read() beginnt mit der Suche in der nächsten Zeile. Wenn nach der angegebenen Zeile keine weiteren Übereinstimmungen mehr vorhanden sind, wird $read$null zurückgegeben - die Schleife wird beendet.

Der w Schalter wird ein Platzhalter bei der Suche verwenden

Der n Schalter den Text verhindert Auswertung liest, als ob es mSL Code war. In fast EVERY Fall müssen Sie den n-Schalter verwenden. Außer wenn du es wirklich brauchst. Unsachgemäße Verwendung der $ read() - Kennung ohne den "n" -Schalter könnte Ihr Skript sehr verwundbar machen.

Das Ergebnis wird in einer Variablen namens %line gespeichert, um es später zu verwenden, falls Sie es benötigen.

Danach verwenden wir eine noop, um eine Regex nach Ihren Bedürfnissen auszuführen. In diesem Fall können Sie $regml(0) verwenden, um den Betrag der Übereinstimmungen zu finden, die in Ihrer Regex-Suche angegeben sind. Mit einer if-Anweisung können Sie sehen, ob es zwei oder mehr Übereinstimmungen gibt.

Ich hoffe, Sie finden dies hilfreich, wenn es etwas unklar ist, werde ich versuchen, es besser zu erklären.

EDIT

@ cp022 kann ich nicht kommentieren, so werde ich meinen Kommentar hier schreiben, so wie kommt, dass Hilfe in keiner Weise Inhalt aus einer Textdatei lesen?

+0

Wow, mein Schlechter hat nicht gelesen gelesen von der Datei gelesen nur 'nach mehreren Wörtern suchen'. Wird meine Antwort so schnell wie möglich entfernen Danke für die Korrektur. – Cp022

Verwandte Themen