<p>如果我们希望匹配特定的单词,我们可能希望从以下类似的表达式开始:</p>
<pre><code>(aether|altitude|aphelion|apside|apsis|ascension|autumnal equinox|east|eastward|eclipse|ecliptic|elliptical|epicycle|equinoctical|exquinox|fixed star|latitude|longitudes?|mean ecliptic|meridian|mobile star|nodes?|north|octant|orbit|\borbital\b|\bparallax\b|\brays\b|\bretrograde\b|rise|sidereal|sidereal position|solstice|south|star|vernal equinox|west),?
</code></pre>
<h3><a href="https://regex101.com/r/V2SNtd/1/" rel="nofollow noreferrer">Demo 1</a></h3>
<p>然后通过在char类中添加所需的标点来修改它:</p>
<pre><code>[,:;\.]?
</code></pre>
<p>我们的表达方式可能是:</p>
<pre><code>(aether|altitude|aphelion|apside|apsis|ascension|autumnal equinox|east|eastward|eclipse|ecliptic|elliptical|epicycle|equinoctical|exquinox|fixed star|latitude|longitudes?|mean ecliptic|meridian|mobile star|nodes?|north|octant|orbit|\borbital\b|\bparallax\b|\brays\b|\bretrograde\b|rise|sidereal|sidereal position|solstice|south|star|vernal equinox|west)[,:;\.]?
</code></pre>
<h3><a href="https://regex101.com/r/qEiVWC/1/" rel="nofollow noreferrer">Demo 2</a></h3>
<h3>测试</h3>
<pre><code># coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(aether|altitude|aphelion|apside|apsis|ascension|autumnal equinox|east|eastward|eclipse|ecliptic|elliptical|epicycle|equinoctical|exquinox|fixed star|latitude|longitudes?|mean ecliptic|meridian|mobile star|nodes?|north|octant|orbit|\borbital\b|\bparallax\b|\brays\b|\bretrograde\b|rise|sidereal|sidereal position|solstice|south|star|vernal equinox|west),?"
test_str = ("aether\n"
"altitude\n"
"aphelion\n"
"apside\n"
"apsis\n"
"ascension\n"
"autumnal equinox\n"
"east?.\n"
"eastward\n"
"eclipse\n"
"ecliptic\n"
"elliptical\n"
"epicycle\n"
"equinoctical\n"
"exquinox\n"
"fixed star\n"
"latitude\n"
"longitude\n"
"longitudes\n"
"mean ecliptic\n"
"meridian\n"
"mobile star\n"
"node\n"
"nodes\n"
"north\n"
"octant\n"
"orbit\n"
"orbital\n"
"parallax\n"
"rays\n"
"retrograde\n"
"rise\n"
"sidereal\n"
"sidereal position\n"
"solstice\n"
"south\n"
"star\n"
"vernal equinox\n"
"west")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
</code></pre>