2017-06-01 14 views
1

Gibt es ein Muster, das in der Lage ist zu entscheiden, ob eine Zeichenkette ein allgemeines Wort oder ein regulärer Ausdruck ist? Oder gibt es ein JavaScript-Tool, das es tut?Wie kann man einen regulären Ausdruck identifizieren?

Ein regulärer Ausdruck kann aus einer Zeichenfolge erstellt werden und hat normalerweise folgende Form: [a-zA-z] * \ d?

Und ein geläufiges Wort kann sein: 'Katze', 'Hund', etc. Ich möchte wissen, ob ein Wert einer Zeichenfolge ein regulärer Ausdruck und kein allgemeines Wort ist.

Mit anderen Worten, ich kann eine Regex schreiben, die eine Regex identifizieren?

+4

viele gängige Wörter sind auch gültige reguläre Ausdrücke. Welches Problem möchtest du lösen? – kennytm

+0

Solange Sie diese Art von Zeichenfolgen nicht annehmen// user8099525/'eine Regex, dann ja, zu einem gewissen Grad. – revo

+0

Keine Zeichenfolge ist ein "regulärer Ausdruck" in Javasript, es sei denn, sie wird mit dem Konstruktor RegExp analysiert. Viele Zeichenfolgen können zu regulären Ausdrücken gemacht werden. Gewöhnliche Wörter können zu regulären Ausdrücken gemacht werden. Wenn Sie also fragen, ob es einen Weg gibt, zwischen den beiden (visuell) basierend auf einem Muster zu unterscheiden - nein. Wenn Sie fragen, ob Sie feststellen können, ob eine Variable eine Zeichenkette oder ein Regex ist - natürlich, aber das ist eine Typüberprüfung und hat nichts mit dem zugrunde liegenden Zeichenmuster zu tun. – Damon

Antwort

0

Vorausgesetzt Sie haben eine Quelle (wie zB ein Artikel) ausrichten mögen und wollen, welche Worte überprüfen, sind am häufigsten in dieser Quelle:

Angenommen, den ganzen Block von Texten in den Artikeln sind in einer Zeichenkette, zugewiesen zu Variable "str":

// Will be used to track word counting 
const arrWords = []; 
// Target string 
const str = 'fsdf this is the article fsdf we are targeting'; 
// We split each word in one array 
const arrStr = str.trim().split(' '); 

// Lets iterate over the words 
const iterate = arrStr.forEach(word => { 
    // if a new word, lets track it by pushing to arrWords 
    if (!arrWords.includes(word)) { 
    arrWords.push({ word: word, count: 1 }); 
    } else { 
    // if the word is being tracked, and we come across the same word, increase the property "count" by 1 
    const indexOfTrackedWord = arrWords.indexOf(word); 
    arrWords[indexOfTrackedWord].count++; 
    } 
}); 

// Once that forEach function is done, you now have an array of objects that look like this for each word: 
arrWords: [ 
    { 
    word: 'fsdf', 
    count: 2 
    }, 
    { 
    word: 'this', 
    count: 1 
    }, 
    // etc etc for the other words in the string 
]; 

Jetzt können Sie nur console.log (arrWords), um die Ergebnisse zu sehen!

Verwandte Themen