Für das gegebene Beispiel dieser Regex würde die Arbeit machen:
(((pota?|ota)t?|tat)o?|ato)
Diese alle möglichen Teilketten in einem verschachtelten OR (|
) Ausdruck 3-Zeichen und entsprechen alle nachfolgenden Zeichen von ‚Kartoffel‘ nehmen wenn sie anwesend sind (optional).
Dieser Ausdruck enthält eine wiederholbare Logik, sodass er dynamisch aus jedem vom Benutzer bereitgestellten Suchelement erstellt werden kann.
Um dies zu demonstrieren, hier ist ein Live-JavaScript-Snippet, das genau das tut. Sie können einen Suchbegriff und den zu suchenden Text eingeben. Dann gibt es den regulären Ausdruck aus und wendet ihn an, wobei er die übereinstimmenden Textteile hervorhebt.
Es wird einfach sein, das zu einer anderen Sprache zu übersetzen, die reguläre Ausdrücke unterstützt:
// Core function
function buildRegexFor(find) {
var regexStr = find.substr(0,3);
for (var i = 1; i < find.length - 2; i++) {
regexStr = '(' + regexStr + find.substr(i+2,1) + '?|' + find.substr(i,3) + ')';
}
return regexStr;
}
// Handle button click event
document.querySelector('button').onclick = function() {
// (1) read input
var find = document.querySelector('input').value;
var str = document.querySelector('textarea').value;
// (2) build regular expression using above function
var regexStr = buildRegexFor(find);
// (3) apply regular expression to text and highlight all found instances
str = str.replace(new RegExp(regexStr, 'g'), "<b>$1</b>");
// (4) output
document.querySelector('span').textContent = regexStr;
document.querySelector('div').innerHTML = str;
};
b { background: yellow }
Value to find:<br>
<input value="potato"><br>
<button>find</button><br>
Text to find in:<br>
<textarea cols=40>There is a spot in the botanic garden
on this atol that beats all stats as it rotates potatoes.</textarea><br>
Regex: <span></span><br>
<div></div>
Vor allem, wenn Sie für Teilzeichen dann maximale Länge suchen Länge dieser Zeichenfolge sein sollte . In diesem Fall 6. –
Vielleicht durch Rekursion z.B. wenn es mit s [i] maschiert, dann ruf mit s [i + 1] an? –
Was ist die Quelle der Eingabe? Benutzer ? Und wo sieht es nach einer Teilzeichenfolge der vom Benutzer eingegebenen Zeichenkette aus? –