Зірочка - це просто оператор повторення , але вам потрібно сказати, що ви повторюєте. /*abc*/
відповідає рядку, що містить ab та нуль або більше c (тому що другий * знаходиться на c; перший є безглуздим, оскільки немає чого його повторювати). Якщо ви хочете, щоб щось відповідало, вам потрібно сказати .*
- крапка означає будь-який символ ( у межах певних вказівок ). Якщо ви хочете просто зіставити abc, ви можете просто сказати grep 'abc' myFile
. Для більш складного збігу вам потрібно використовувати .*
- grep 'abc.*def' myFile
відповідатиме рядку, який містить abc, за яким слід def з чимось за бажанням між ними.
Оновлення на основі коментаря:
*
у регулярному виразі не зовсім те саме, що * у консолі. У консолі * є частиною конструкції glob і виконує лише функцію підстановки (наприклад, ls *.log
буде перераховано всі файли, які закінчуються на .log). Однак у регулярних виразах * є модифікатором, що означає, що він застосовується лише до символу або групи, що передує йому. Якщо ви хочете, щоб * у регулярних виразах діяв як підстановочний знак, вам потрібно використовувати, .*
як уже згадувалося раніше, - крапка є символом підстановки, а зірка, змінюючи крапку, означає знайти одну або кілька крапок; тобто знайти одного або декількох персонажів.