回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我很难用Python正则表达式。我想罚款任何N,S,E,W,NB,SB,EB,WB,包括在字符串的开始或结束。我的正则表达式很容易在中间找到它,但在开始或结束时都失败了。你知道吗</p>
<p>有人能告诉我下面的代码示例中dirPattern I有什么问题吗?你知道吗</p>
<p>注意:我意识到我还有一些其他的问题要处理(例如“W of”),但是我想我知道如何为这些问题修改regex。你知道吗</p>
<p>提前谢谢。你知道吗</p>
<pre><code>import re
nameList = ['Boulder Highway and US 95 NB', 'Boulder Hwy and US 95 SB',
'Buffalo and Summerlin N', 'Charleston and I-215 W', 'Eastern and I-215 S', 'Flamingo and NB I-15',
'S Buffalo and Summerlin', 'Flamingo and SB I-15', 'Gibson and I-215 EB', 'I-15 at 3.5 miles N of Jean',
'I-15 NB S I-215 (dual)', 'I-15 SB 4.3 mile N of Primm', 'I-15 SB S of Russell', 'I-515 SB at Eastern W',
'I-580 at I-80 N E', 'I-580 at I-80 S W', 'I-80 at E 4TH St Kietzke Ln', 'I-80 East of W McCarran',
'LV Blvd at I-215 S', 'S Buffalo and I-215 W', 'S Decatur and I-215 WB', 'Sahara and I-15 East',
'Sands and Wynn South Gate', 'Silverado Ranch and I-15 (west side)']
dirMap = {'N': 'North', 'S': 'South', 'E': 'East', 'W': 'West'}
dirPattern = re.compile(r'[ ^]([NSEW])B?[ $]')
print('name\tmatch\tdirSting\tdirection')
for name in nameList:
match = dirPattern.search(name)
direction = None
dirString = None
if match:
dirString = match.group(1)
if dirString in dirMap:
direction = dirMap[dirString]
print('%s\t%s\t%s\t%s'%(name, match, dirString, direction))
</code></pre>
<p>一些示例预期输出:</p>
<blockquote>
<p>name match dirSting direction</p>
<p>Boulder Highway and US 95 NB <_sre.SRE_Match object at 0x7f68af836648> N North</p>
<p>Boulder Hwy and US 95 SB <_sre.SRE_Match object at 0x7f68ae836648> S South</p>
<p>Buffalo and Summerlin N <_sre.SRE_Match object at 0x7f68af826648> N North</p>
<p>Charleston and I-215 W <_sre.SRE_Match object at 0x7f68cf836648> W West</p>
<p>Flamingo and NB I-15 <_sre.SRE_Match object at 0x7f68af8365d0> N North</p>
<p>S Buffalo and Summerlin <_sre.SRE_Match object at 0x7f68aff36648> S South</p>
<p>Gibson and I-215 EB <_sre.SRE_Match object at 0x7f68afa36648> E East</p>
</blockquote>
<p>但是,开始或结束示例给出:</p>
<blockquote>
<p>Boulder Highway and US 95 NB None None None</p>
</blockquote>