我需要正则表达式的帮助,以便从字符串中获得以下内容
dal001.caxxxxx.test.com. ---> caxxxxx.test.com
caxxxx.test.com -----> caxxxx.test.com
所以基本上在第一个例子中,我不想要dal001
或者任何以3个字母和3个数字开头的东西,如果它只以ca
开头,我就不想要字符串的其余部分
在第二个示例中,我希望整个字符串只以ca
开头
到目前为止,我已经尝试了(^[a-z]{3}[\d]+\.)?(ca.*)
,但是当字符串被激活时,它不起作用
dal001.mycaxxxx.test.com
任何帮助都将不胜感激
你可以用
见regex demo。要使其不区分大小写,请使用
re.I
(re.search(rx, s, re.I)
,请参见下文)进行编译详细信息:
^
-字符串的开头(?:[a-z]{3}\d{3}\.)?
一个可选序列,由3个字母、3个数字和.
组成(ca.*)
-group1:ca
和字符串的其余部分李>见Python demo:
像这样使用^{} :
如果您正在使用
re
:my_regex
匹配以[3 letters][3 digits][a .]
开头(^
锚定到字符串开头)的字符串,但仅可选,并且使用非捕获组((?:)
将不会获得编号的引用以在sub
中使用)。在任何一种情况下,它都必须包含ca
,后跟任何内容,并且该部分在对re.sub
的调用中用作替换re.compile
用于加快速度,以防有许多字符串需要匹配关于
re.compile
的说明: 有些答案不需要在循环之前预先编译正则表达式。他们做了一个交易:删除一行代码,代价是在每次迭代时隐式地重新编译正则表达式。如果要在循环体中使用正则表达式,则应始终首先编译它。这样做会对程序的速度产生重大影响,即使迭代次数很小,也不会增加成本Here is a comparison的编译版本与the same loop using the same regex的非编译版本,用于不同的循环迭代次数和试验次数。你自己判断吧相关问题 更多 >
编程相关推荐