2016-04-25 6 views
-1

String InhaltWie Raum passen, Newline in regexp

<head> 
    <meta charset="UTF-8"> 
    <title></title> 
    <[email protected] a.css--> 
    <[email protected] BOWER/jquery--> 
    <[email protected] /build/bundle--> 
    <!-- 
     @require bootstrap 
     @require bootstrap.css 
     @require bootstrap.font 
    --> 
</head> 

JS

var content = ...; 
var reg = /<!--[\s\t\n]*[email protected] (.+?)[\s\t\n]*?-->/g; 
var r; 
while((r = reg.exec(content)) != null) { 
    console.log(r[1]); 
} 

Ausgabe

a.css 
BOWER/jquery 
/build/bundle 

Es ist nicht der letzte Block übereinstimmt, was vermissen in meinem reg Ausdruck.

+0

'\ s' entspricht jede Art von Leerzeichen einschließlich Neue-Zeile. – heemayl

Antwort

2

(Punkt). Entspricht einem beliebigen Zeichen außer Newline. Aus diesem Grund stimmt die letzte Zeichenfolge nicht überein. So können Sie etwas wie [\s\S]* oder [^] für die Zuordnung eines beliebigen Zeichens verwenden. (Ref: Matching multiline Patterns)

var content = `<head> 
 
    <meta charset="UTF-8"> 
 
    <title></title> 
 
    <[email protected] a.css--> 
 
    <[email protected] BOWER/jquery--> 
 
    <[email protected] /build/bundle--> 
 
    <!-- 
 
     @require bootstrap 
 
     @require bootstrap.css 
 
     @require bootstrap.font 
 
    --> 
 
</head>`; 
 
var reg = /<!--[\s\t\n]*[email protected] ([\s\S]+?)[\s\t\n]*?-->/g; 
 
var r; 
 
while ((r = reg.exec(content)) != null) { 
 
    console.log(r[1]); 
 
}

0

Try Hinzufügen mehrzeilige flag (m)

/<!--[\s\t\n]*[email protected] ([\s\S]+?)[\s\t\n]*?-->/gm 
0

starten

@require (.+?)?(?:-->|\s) 

Regex demo

Erläuterung:
(…): Gruppe Capturing sample
.: alle Zeichen außer Zeilenumbruch sample
+: Ein oder mehr sample
?: Einmal oder keine sample
(?: …): Gruppe Nicht-Erfassung sample
|: Wechsel-/ODER-Operand sample
\s: "Leerzeichen": raum, Tabulator, neue Zeile, Wagenrücklauf, vertikale Lasche sample

Output:

MATCH 1 
1. [71-76] `a.css` 
MATCH 2 
1. [97-109] `BOWER/jquery` 
MATCH 3 
1. [130-143] `/build/bundle` 
MATCH 4 
1. [173-182] `bootstrap` 
MATCH 5 
1. [200-213] `bootstrap.css` 
MATCH 6 
1. [231-245] `bootstrap.font`