Snažím sa napísať selektor, ktorý odfiltruje / odstráni všetko po symbole komentára (#), ale ignoruje # symboly v reťazcoch ("" alebo "")
Takže v nižšie uvedenom príklade by bol filtrovaný / odstránený iba posledný riadok
"#dummy comment" asd asd
" abc # dummy comment"
abc #real comment
Toto sú dva výbery regulárnych výrazov, s ktorými som doteraz prišiel (neskôr pridám s / tag):
/("|").*#.*("|")/g --> selects fake commnts
/#(?!!).+/g ---> highlights all comments, including above ones (?!! is to ignore #!/usr/bin/env perl )
Momentálne sa snažím pripojiť k týmto dvomkomentáre na dosiahnutie vyššie uvedeného výsledku. Snažil som sa používať vyhľadávanie vpred a vzad, ale zdá sa, že sa to nedarí. Všetky rady by sa veľmi ocenili.
odpovede:
2 pre odpoveď č. 1A čo táto jednoduchá metóda?
- najskôr odstráňte všetky podreťazce medzi dvojitými alebo jednoduchými úvodzovkami
- extrahovať podreťazec po a
#
jednoduchým regulárnym výrazom cpature
Tu je skúšobný program pre zadanie vzorky:
#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>) {
chomp;
s/[""][^""]*[""]//g;
if (m/#(.*)/) {
print "$1n";
}
}
__DATA__
"#dummy comment" asd asd
" abc # dummy comment"
abc #real comment