正则表达式怎么匹配A.到B.之间的内容?

下列原始凭证中,属于企业自制原始凭证的是(  )。
A. 购货取得的发票
B. EMS快递号的发票
C. 领料单
D. 住宿费发票

正则:[A-F][\.][^B-F]*
(可以匹配到大部分数据,但是如果是“A.EMS快递号”这样就匹配不出来了,因为带了英文。)

有没有
[^]中的^怎么用,只能限定一个字符吗?不能限定定一个字符串吗?

第1个回答  推荐于2016-07-30
var r=/[A-F]\.(.*)/mg;
var s="下列原始凭证中,属于企业自制原始凭证的是(  )。\nA. 购货取得的发票\nB. EMS快递号的发票\nC. 领料单\nD. 住宿费发票\n";
var a="";
while(a=r.exec(s)) {
alert(a[1]);
}


这种写法是javascript里的正则。

不知是用的是什么语言?

可以考虑从[A-F]\.和换行符之间取字符串

本回答被提问者采纳
第2个回答  2013-12-03
#!/usr/bin/python
# coding: utf-8
# for python:

import re

patt = re.compile(r"""^
    \s*
    (?P<item>[A-E])
    \.
    \s*
    (?P<content>.*)
    """, re.I|re.X|re.U)

context = u"""下列原始凭证中,属于企业自制原始凭证的是(  )。
A. 购货取得的发票
B. EMS快递号的发票
C. 领料单
D. 住宿费发票
"""

for m in filter(None, map(patt.match, context.splitlines())):
    print("%(item)s -- %(content)s"%m.groupdict())

第3个回答  2013-12-03
[A-F]\.([^\r\n]+)追问

这个不能匹配如:
A. 购货取得的发票
这行也应该是第一个的。
B. EMS快递号的发票
C. 领料单


A. 购货取得的发票
这行也应该是第一个的。


这种情况

追答

[A-F]\.([^\.]+)\b[\s]*
不知道B为什么取不出来
我自己输就是好的