📄 ch26_10.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 26] 26.10 Pattern Matching Quick Reference with Examples </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly & Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly & Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:44:12Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-260-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch26_01.htm"TITLE="26. Regular Expressions (Pattern Matching)"><LINKREL="prev"HREF="ch26_09.htm"TITLE="26.9 Valid Metacharacters for Different UNIX Programs "><LINKREL="next"HREF="ch27_01.htm"TITLE="27. Searching Through Files"></HEAD><BODYBGCOLOR="#FFFFFF"TEXT="#000000"><DIVCLASS="htmlnav"><H1><IMGSRC="gifs/smbanner.gif"ALT="UNIX Power Tools"USEMAP="#srchmap"BORDER="0"></H1><MAPNAME="srchmap"><AREASHAPE="RECT"COORDS="0,0,466,58"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="467,0,514,18"HREF="jobjects/fsearch.htm"ALT="Search this book"></MAP><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch26_09.htm"TITLE="26.9 Valid Metacharacters for Different UNIX Programs "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 26.9 Valid Metacharacters for Different UNIX Programs "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 26<BR>Regular Expressions (Pattern Matching)</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="CHAPTER"HREF="ch27_01.htm"TITLE="27. Searching Through Files"><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 27. Searching Through Files"BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-2540">26.10 Pattern Matching Quick Reference with Examples </A></H2><PCLASS="para">Article<ACLASS="xref"HREF="ch26_04.htm"TITLE="Using Metacharacters in Regular Expressions ">26.4</A><ACLASS="indexterm"NAME="UPT-ART-2540-IX-PATTERN-MATCHING-QUICK-REFERENCE"></A><ACLASS="indexterm"NAME="AUTOID-29504"></A>gives a tutorial introduction to regular expressions. This article isintended for those of you who just need a quick listing of regularexpression syntax as a refresher from time to time. It also includessome simple examples. The characters in<ACLASS="xref"HREF="ch26_10.htm#UPT-ART-2540-TAB-0"TITLE="Special Characters in Search Patterns">Table 26.6</A>have special meaning only in search patterns.<ACLASS="indexterm"NAME="AUTOID-29508"></A><ACLASS="indexterm"NAME="UPT-ART-2540-IX-REGULAR-EXPRESSIONS-PATTERN-MATCHING-QUICK-REFERENCE"></A></P><TABLECLASS="table"><CAPTIONCLASS="table"><ACLASS="title"NAME="UPT-ART-2540-TAB-0">Table 26.6: Special Characters in Search Patterns</A></CAPTION><THEADCLASS="thead"><TRCLASS="row"VALIGN="TOP"><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Pattern</TH><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">What Does it Match?</TH></TR></THEAD><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Match any <EMCLASS="emphasis">single</EM> character except newline.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">*</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match any number (or none) of the singlecharacters that immediately precede it. The preceding character canalso be a regular expression. For example, since <CODECLASS="literal">.</CODE> (dot)means any character,<CODECLASS="literal">.*</CODE> means "match any number ofany character."</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">^</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match the following regular expression at the beginning of the line.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">$</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match the preceding regular expression at the end of the line.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">[ ]</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match any <EMCLASS="emphasis">one</EM> of the enclosed characters.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">A hyphen (<CODECLASS="literal">-</CODE>) indicates a range ofconsecutive characters. A caret (<CODECLASS="literal">^</CODE>) as the first characterin the brackets reverses the sense: it matches any one character<EMCLASS="emphasis">not</EM> in the list. A hyphen or a right square bracket(<CODECLASS="literal">]</CODE>) as the first character is treated as a member of thelist. All other metacharacters are treated as members of the list.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\{<CODECLASS="replaceable"><I>n</I></CODE>,<CODECLASS="replaceable"><I>m</I></CODE>\}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match a range of occurrences of the single character that immediately precedesit. The preceding character can also be a regularexpression. \{<CODECLASS="replaceable"><I>n</I></CODE>\} will match exactly <CODECLASS="replaceable"><I>n</I></CODE>occurrences; \{<CODECLASS="replaceable"><I>n</I></CODE>,\} will match at least<CODECLASS="replaceable"><I>n</I></CODE> occurrences; and\{<CODECLASS="replaceable"><I>n</I></CODE>,<CODECLASS="replaceable"><I>m</I></CODE>\} will match any number ofoccurrences between <CODECLASS="replaceable"><I>n</I></CODE> and <CODECLASS="replaceable"><I>m</I></CODE>.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Turn off the special meaning of the character that follows.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\( \)</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Save the pattern enclosed between \( and\) into a special holding space. Up to nine patterns can be saved on asingle line. They can be "replayed" in substitutions by the escapesequences \1 to \9.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\< \></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match characters at beginning(<CODECLASS="literal">\<</CODE>) or end (<CODECLASS="literal">\></CODE>) of aword. </P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">+</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match one or more instances of preceding regular expression.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">?</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match zero or one instances of preceding regular expression.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">|</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Match the regular expression specified before or after.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">( )</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Apply a match to the enclosed group of regular expressions.</P></TD></TR></TBODY></TABLE><PCLASS="para">The characters in<ACLASS="xref"HREF="ch26_10.htm#UPT-ART-2540-TAB-1"TITLE="Special Characters in Replacement Patterns">Table 26.7</A>have special meaning only in replacementpatterns.<ACLASS="indexterm"NAME="AUTOID-29599"></A></P><TABLECLASS="table"><CAPTIONCLASS="table"><ACLASS="title"NAME="UPT-ART-2540-TAB-1">Table 26.7: Special Characters in Replacement Patterns</A></CAPTION><THEADCLASS="thead"><TRCLASS="row"VALIGN="TOP"><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Pattern</TH><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">What Does it Match?</TH></TR></THEAD><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Turn off the special meaning of the character that follows.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\<CODECLASS="replaceable"><I>n</I></CODE></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Restore the <CODECLASS="replaceable"><I>n</I></CODE>th pattern previously saved by <CODECLASS="literal">\(</CODE>and <CODECLASS="literal">\)</CODE>.<CODECLASS="replaceable"><I>n</I></CODE> is a number from 1 to 9,with 1 starting on the left.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">&</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Re-use the search pattern as part of the replacement pattern.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">~</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Re-use the previous replacement pattern in the current replacement pattern.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\u</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Convert first character of replacement pattern to uppercase.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\U</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Convert replacement pattern to uppercase.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\l</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Convert first character of replacement pattern to lowercase.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\L</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Convert replacement pattern to lowercase.</P></TD></TR></TBODY></TABLE><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="UPT-ART-2540-SECT-1.1">26.10.1 Examples of Searching </A></H3><PCLASS="para">When used with <EMCLASS="emphasis">grep</EM> or <EMCLASS="emphasis">egrep</EM>, regular expressions are surrounded by quotes. (If the pattern contains a <CODECLASS="literal">$</CODE>, you must use single quotes; e.g., <CODECLASS="literal">'</CODE><CODECLASS="replaceable"><I>pattern</I></CODE><CODECLASS="literal">'</CODE>.)When used with <EMCLASS="emphasis">ed</EM>, <EMCLASS="emphasis">ex</EM>, <EMCLASS="emphasis">sed</EM>, and <EMCLASS="emphasis">awk</EM>,regular expressions are usually surrounded by <CODECLASS="literal">/</CODE> (although anydelimiter works). <ACLASS="xref"HREF="ch26_10.htm#UPT-ART-2540-TAB-2"TITLE="Search Pattern Examples">Table 26.8</A>has some example patterns.</P><TABLECLASS="table"><CAPTIONCLASS="table"><ACLASS="title"NAME="UPT-ART-2540-TAB-2">Table 26.8: Search Pattern Examples</A></CAPTION><THEADCLASS="thead"><TRCLASS="row"VALIGN="TOP"><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Pattern</TH><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">What Does it Match?</TH></TR></THEAD><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">bag</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">The string <CODECLASS="literal">bag</CODE>.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">^bag</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><CODECLASS="literal">bag</CODE> at beginning of line.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">bag$</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><CODECLASS="literal">bag</CODE> at end of line.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">^bag$</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><CODECLASS="literal">bag</CODE> as the only word on line.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">[Bb]ag</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><CODECLASS="literal">Bag</CODE> or <CODECLASS="literal">bag</CODE>.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">b[aeiou]g</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Second letter is a vowel.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">b[^aeiou]g</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Second letter is a consonant (or uppercase or symbol).</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">b.g</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Second letter is any character.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">^...$</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Any line containing exactly three characters.</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">^\.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Any line that begins with a <CODECLASS="literal">.</CODE> (dot).</TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">^\.[a-z][a-z]</TD><TDCLASS="entry"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -