python用正则表达式提取字符串中的数字,python 字符串 正则表达式
使用
bash正则表达式:
re=http://([^/] )/).
if[$ name=~ ~ $ re];然后echo $ { BASH _ re match[1]};船方不负担装货费用
编辑op提示符语法描述。正则表达式语法是一个大话题。虽然这里不能全面介绍,但是为了全面理解这个例子,我还是要试一试。
re=http://([^/] )/).
这是存储在bash变量中的正则表达式。这意味着您希望输入字符串匹配并提取子字符串。打破它:
3358只是一个字符串。输入字符串必须包含正则表达式匹配的子字符串。
[]通常方括号用来表示“匹配括号中的任何字符”。因此,c [ao] t与“猫”和“垛”是一致的。[]的字符已经改为“匹配方括号中的任何字符”,所以在这种情况下,[/]将匹配除“/”以外的任何字符。
方括号只能匹配一个字符。在添加结束时,说“匹配一个或多个先前的子表达式”。因此,[/]匹配一组或多组所有字符,并且不包含“/”。
在子表达式周围)意味着保存与子表达式匹配的后续处理。如果您的语言支持此功能,将提供一种机制来获取这些子匹配。对于bash,这是BASH_REMATCH数组。
最后,精确匹配“/”,以便所有完全限定的域名方法都匹配后面的“/”
接下来,您需要对照正则表达式测试输入字符串,以确定它们是否匹配。为此,使用bash条件。
if[$ name=~ ~ $ re];然后
echo ${BASH_REMATCH[1]}
船方不负担装货费用
在bash中,[]指定了扩展的条件测试,并且可以包含=bash正则表达式操作符。在这种情况下,测试输入字符串$ name是否与正则表达式$ re匹配。如果有匹配,括号()))由于正则表达式的结构保证有子匹配)。可以通过使用BASH_REMATCH数组来访问。
数组中的元素0 $ {BASH_REMATCH [0]} 0]}是正则表达式匹配的整个字符串,即"http://www.google.com/"。
数组的后续元素是子匹配的后续结果。注意,正则表达式依次对应多个子匹配(-bash _ rematch元素)。所以在这种情况下,$ {BASH_REMATCH [1]}包含“www.google.com”。我认为这是你想要的字符串。
注意,BASH_REMATCH数组的内容只在最后一次使用正则表达式=操作符时应用。所以如果继续做更多的正则表达式匹配,每次都必须从这个数组中保存你需要的东西。
这似乎是一个很长的解释,但它确实掩盖了正则表达式的复杂性。他们非常强大,并且相信体面的表达式,但是正则表达式的语法很复杂。正则表达式的实现也不一样,所以不同的语言支持不同的函数,语法上可能会有细微的差别。尤其是正则表达式中的字符转义是一个难题。尤其是当这些字符在特定的语言中有不同的含义时。
请注意,您可以通过在条件中引用此变量,将正则表达式直接放在条件中,而不是将$ re变量设置到另一行。但是,在bash 3.2中,关于是否需要这样的字符正则表达式引号,这些规则已经改变。将正则表达式放入另一个变量是一个简单的方法,可以在所有支持=match操作符的bash版本中按预期执行。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。