2013-01-24 64 views
0

我正在创建一个Python正则表达式以匹配特定模式:模式始终以任何大写或小写字母开头,后面可能有任意数量的字母或数字并始终在一段时间内结束(.)。字母后跟一些字母或数字以句点结尾

例如,这个模式将匹配有问题的标签(如:Q42.)的行HTML代码:

<p>Q42. Which of the following newspapers, if any, do you read on a regular 
    basis? Please select all that apply:</p> 
<p>NY Times</p> 
<p>Chicago Tribune</p> 

编辑:
我试过[a-zA-Z]\W*\.
,要怎么说我是任何字母上限或下限,后面跟随任意数字或字母的上限或下限,或数字后面跟一个句点。

编辑:
我只是想测试渡过整条生产线包含这些字符或没有。只寻找TrueFalse

+3

你到目前为止尝试过什么?什么没有用?什么是预期的输出?例如,我们很乐意帮助您修复迄今为止编写的代码,但无效。 –

+1

在你的示例输入中使用“O”代替“Q”肯定会出错... – geoffspear

+1

我试过'[a-zA-Z] \ W * \' – Johnston

回答

1

关闭:

\b[a-zA-Z]\w*\. 

应该这样做。

\W意味着“任何字符除了字母数字,所以你需要的对面,\w

\b是一个单词边界,以确保我们在单词的开头开始比赛。

+0

我错了吗?我不认为这是行得通的: '>>> print re.search(“\ b [a-zA-Z] \ w * \。”,t)' '没有' '>>> t' ''

Q42。下列哪些报纸,如果有的话,您是否阅读过正规的\ n 基础?请选择所有适用的选项:

' – Johnston

+0

@ user974407:您需要使用带有正则表达式的原始字符串:'r“\ b [a-zA-Z] \ w * \。”',否则'\ b'会被误解作为退格字符。 –

+0

谢谢。这确实有效。你是对的。虽然技术上WillOEM的答案会更好地匹配我的问题,但我会使用您的问题,因为我的问题标签可能会在其中加上下划线。我仍然不完全理解'\ b'的全部概念。这与WillOEM的有何不同? – Johnston

3

尝试:

[a-zA-Z][a-zA-Z0-9]*\.

应当指出的是,\w无线会匹配字母数字字符和下划线。

+0

我想看看这行是否包含这些字符。 – Johnston

+0

好的,呃。我不确定你是否试图拉出整条线,而不是只是布尔测试它。 – woemler

+0

只是布尔测试它。 – Johnston

相关问题