1、Python正则表达式
参考文档:Python 正则表达式(RegEx)
2、re.sub(pattern, repl, string, count=0, flags=0)
Python中实现正则表达式提取替换,需要使用re.sub()
,具体参数说明如下:
1)pattern参数
pattern是正则表达式字符串。字符串前一般加r
。
参考文档:Python 字符串前r、b、u和f的前缀作用及用法
2)repl参数
repl
是被替换成的内容,可以是字符串,也可以是函数。字符串匹配后直接替换,函数则会每次匹配的字符串会调用执行进行处理。
3)string参数
string
表示要被处理,要被替换的字符串。
4)count参数
count
是匹配替换的次数
5)flags参数
IGNORECASE
(简写I
),匹配对大小写不敏感。
LOCALE
(简写L
),locales是C语言库中的一项功能,是用来为需要考虑不同区域语言的编程提供帮助的。
MULTILINE(
简写M
),^
匹配字符串的开始和字符串中每行的开始。同样的, $
元字符匹配字符串结尾和字符串中每行的结尾。
DOTALL
(简写S
),此模式下.
的匹配不受限制,可匹配任何字符,包括换行符,但默认是不能匹配换行符。
VERBOSE
(简写X
),冗余模式, 此模式忽略正则表达式中的空白和#号的注释。
3、使用re.sub()提取替换字符串
可以使用re.sub()
提取html中指定内容并进行替换,如下,
import redef replace_num(str): print("--------------") print(str.group()) print(str.group(1))#匹配到的第1个分组 print(str.group(2))#匹配到的第2个分组 print("--------------") return ""my_str = '''1、new 运算符:用于创建对象和调用构造函数。这个我们创建对象实例就比较常用了,比如:
StringBuilder str=new StringBuilder();2、new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。简单的说,就是现在写的这个类,想写一个和基类中相同的成员,而不继承基类的。运用多态的特性时,也不会调用这个显示隐藏的方法。具体看下如下代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp2{ public class Program { static void Main(string[] args) { animal a = new animal(); a.name = "animal"; a.say(); cat c = new cat(); c.name = "cat"; c.say(); dog d = new dog(); d.name = "dog"; d.say(); sheep s = new sheep(); s.name = "sheep"; s.say(); animal a1 = new cat(); a1.say(); animal a2 = new dog(); a2.say(); animal a3 = new sheep(); a3.say(); } } class animal { public string name { get; set; } public virtual void say() { Console.WriteLine("animal say"); } } class cat : animal { public override void say() { Console.WriteLine("cat say"); } } class dog : animal { public new void say() //这个方法被显示隐藏了 { Console.WriteLine("dog say"); } } class sheep : animal { }}3、new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。举个例子看一下,泛型类中T要求有一个无参的构造函数,代码如下,
using System;'''result = re.sub(r'
using System.Collections.Generic;
namespace ConsoleApplication2
{
public class Employee
{
private string name;
private int id;
public Employee()
{
name = "Temp";
id = 0;
}
public Employee(string s, int i)
{
name = s;
id = i;
}
public string Name
{
get { return name; }
set { name = value; }
}
public int ID
{
get { return id; }
set { id = value; }
}
}
class ItemFactory where T : new()
{
public T GetNewItem()
{
return new T();
}
}
public class Test
{
public static void Main()
{
ItemFactory EmployeeFactory = new ItemFactory(); //若没有则会有The Employee must have a public parameterless constructor 错误。 Console.WriteLine("{0}'ID is {1}.", EmployeeFactory.GetNewItem().Name, EmployeeFactory.GetNewItem().ID);
}
}
}(.+?)', replace_num, my_str,flags=re.I|re.M|re.S)print(result) #每次匹配一个数字,执行函数,获取替换后的值