Python 正则表达式RE知识学习

2023-11-12

正则表达式(Regular Expression)是一种强大的文本模式匹配工具,常用于在字符串中查找、替换、分割等操作。在 Python 中,可以使用内置的 re 模块来操作正则表达式。

(ChatGPT编写)下面是一些需要掌握的正则表达式知识:

  1. 字符匹配:

    • 普通字符:正则表达式中的普通字符(如字母、数字、特殊字符)与字符串中的对应字符进行匹配。
    • 元字符:正则表达式中的特殊字符,如 .(匹配任意字符)、*(匹配前一个字符零次或多次)、+(匹配前一个字符一次或多次)等。
  2. 字符类:

    • 使用方括号 [] 来定义一个字符类,可以指定匹配的字符范围。例如,[abc] 匹配字符 'a'、'b' 或 'c'。
    • 可以使用连字符 - 表示范围,例如 [a-z] 匹配任意小写字母。
    • 可以使用取反符号 ^ 来取反字符类,例如 [^0-9] 匹配除数字之外的任意字符。
  3. 重复匹配:

    • *:匹配前一个字符零次或多次。
    • +:匹配前一个字符一次或多次。
    • ?:匹配前一个字符零次或一次。
    • {n}:匹配前一个字符恰好 n 次。
    • {n, m}:匹配前一个字符至少 n 次,最多 m 次。
  4. 边界匹配:

    • ^:匹配字符串的开头。
    • $:匹配字符串的结尾。
    • \b:匹配单词的边界。
  5. 分组与捕获:

    • 使用小括号 () 可以创建一个分组,并可以对分组进行操作,如应用重复匹配、应用修饰符等。
    • 使用 | 可以表示多个分组的选择。
  6. 贪婪与非贪婪匹配:

    • 默认情况下,正则表达式是贪婪匹配,即尽可能多地匹配字符串。
    • 在重复匹配元字符后加上 ? 可以实现非贪婪匹配,即尽可能少地匹配字符串。
  7. 修饰符:

    • re.IGNORECASEre.I:忽略大小写匹配。
    • re.MULTILINEre.M:多行模式,使 ^$ 匹配每行的开头和结尾。
    • re.DOTALLre.S:使 . 匹配包括换行符在内的任意字符。
    • re.VERBOSEre.X:允许使用正则表达式中的空格和注释。

除了以上提到的基本知识,还有更多复杂的正则表达式操作,如零宽断言、反向引用、非捕获分组等。学习正则表达式需要不断练习和实践,可以参考 Python 的官方文档和其他教程资源来深入了解和掌握正则表达式的用法。

提供几个示例来说明正则表达式的使用。

首先,我们需要导入 Python 的 re 模块:

import re

  • 字符匹配:

pattern = r"apple"
text = "I have an apple and a banana."

match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
else:
    print("No match found.")

# Match found: apple

在这个示例中,我们使用了 re.search() 函数来查找字符串中是否有匹配的模式。r"apple" 是我们的模式,而 text 是要进行匹配的字符串。re.search() 返回一个匹配对象,我们可以通过 group() 方法提取匹配的结果。

  • 字符类:

pattern = r"[aeiou]"
text = "Hello, world!"

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['e', 'o', 'o']

在这个示例中,我们使用了 re.findall() 函数来查找字符串中所有匹配的模式。[aeiou] 是一个字符类,它匹配任何一个元音字母。re.findall() 返回一个包含所有匹配项的列表。

  • 重复匹配:

pattern = r"ab*c"
strings = ["ac", "abc", "abbc", "abbbc"]

for string in strings:
    if re.match(pattern, string):
        print("Match found:", string)
    else:
        print("No match found:", string)

# Match found: ac
# Match found: abc
# Match found: abbc
# No match found: abbbc

在这个示例中,我们使用了 re.match() 函数来判断字符串是否与模式匹配。ab*c 是我们的模式,其中 * 表示前一个字符 'b' 可以出现零次或多次。循环遍历 strings 列表中的字符串,并进行匹配判断。

  • 边界匹配:

pattern = r"\bcat\b"
text = "The cat is black. A cat is not a dog. The caterpillar is green."

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['cat', 'cat']

在这个示例中,我们使用了 \b 来匹配单词的边界。\bcat\b 匹配单独的 "cat" 单词。re.findall() 返回一个包含所有匹配项的列表。

  • 分组与捕获:

pattern = r"(\d{3})-(\d{4})"
text = "My phone number is 123-4567."

match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
    print("Area code:", match.group(1))
    print("Number:", match.group(2))
else:
    print("No match found.")

# Match found: 123-4567
# Area code: 123
# Number: 4567

在这个示例中,我们使用了两个小括号 () 来创建分组,并使用 \d 匹配数字。(\d{3}) 匹配一个由三个数字组成的区号,(\d{4}) 匹配一个由四个数字组成的号码。match.group(1)match.group(2) 分别提取了匹配结果中的区号和号码。

  • 贪婪与非贪婪匹配:

pattern = r"<.*>"
text = "<p>This is a paragraph.</p><div>This is a div.</div>"

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['<p>This is a paragraph.</p><div>This is a div.</div>']

在这个示例中,我们使用了 <.*> 的模式进行匹配。.* 表示匹配任意字符零次或多次。由于默认是贪婪匹配,所以整个文本都被匹配为一个结果。如果我们想要非贪婪匹配,只需在 * 后面添加一个 ?

pattern = r"<.*?>"
text = "<p>This is a paragraph.</p><div>This is a div.</div>"

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['<p>', '</p>', '<div>', '</div>']

在这个示例中,我们使用了 <.*?> 的模式进行非贪婪匹配。.*? 表示匹配任意字符零次或多次,但尽可能少地匹配。因此,我们得到了每个标签的单独匹配结果。

这些示例涵盖了更多的正则表达式知识点,包括分组、贪婪与非贪婪匹配。你可以根据需要继续学习和实践更复杂的正则表达式用法。

  • 修饰符:

pattern = r"hello"
text = "Hello, world!"

match = re.search(pattern, text, re.IGNORECASE)
if match:
    print("Match found:", match.group())
else:
    print("No match found.")

# Match found: Hello

在这个示例中,我们使用了 re.IGNORECASE 修饰符,使匹配过程忽略大小写。因此,即使模式中是小写的 "hello",它也能匹配到文本中的 "Hello"。

pattern = r"^hello"
text = "Hello, world!\nHello, everyone!"

matches = re.findall(pattern, text, re.MULTILINE)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['Hello']

在这个示例中,我们使用了 re.MULTILINE 修饰符,使 ^ 匹配每行的开头。因此,模式中的 "^hello" 只匹配第一行的 "Hello"。

这些示例展示了修饰符的使用,你可以根据需要选择合适的修饰符来实现不同的匹配需求。

除了以上的示例,正则表达式还有很多其他功能

  • 零宽断言:

零宽断言用于在匹配时指定位置,而不包括实际的字符。常见的零宽断言包括正向肯定断言 (?=...)、正向否定断言 (?!...)、反向肯定断言 (?<=...) 和反向否定断言 (?<!...)

pattern = r"\b\w+(?=ing\b)"
text = "I'm singing while walking."

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['sing']

在这个示例中,我们使用了正向肯定断言 (?=...),它匹配一个以 "ing" 结尾的单词,但不包括 "ing" 部分。

pattern = r"\b(?=\w{5}\b)\w+\b"
text = "Hello world! This is a test sentence."

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['Hello', 'world', 'This', 'sentence']

 在这个示例中,我们使用了零宽正向断言 (?=\w{5}\b),它匹配包含五个字母的单词的单词边界。\w+ 匹配一个或多个字母字符,\b 匹配单词边界。因此,我们得到了包含五个字母的单词列表。

  • 反向引用:

反向引用允许在正则表达式中引用前面匹配的内容。可以使用 \number 来引用第 n 个分组的内容。

pattern = r"(\w+)\s+\1"
text = "apple apple orange"

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['apple']

在这个示例中,我们使用了 \1 来引用第一个分组 (\w+) 匹配的内容。(\w+) 匹配一个或多个字母或数字,\s+ 匹配一个或多个空白字符,\1 引用第一个分组匹配的内容。因此,我们得到了两个相邻的相同单词 "apple"。

  • 非捕获分组:

非捕获分组允许对分组进行逻辑分组,但不捕获匹配的内容。可以使用 (?:...) 来创建非捕获分组。

pattern = r"(?:Mr|Ms|Mrs)\. (\w+)"
text = "Mr. Smith, Ms. Johnson, Mrs. Davis"

matches = re.findall(pattern, text)
if matches:
    print("Matches found:", matches)
else:
    print("No matches found.")

# Matches found: ['Smith', 'Johnson', 'Davis']

在这个示例中,我们使用了 (?:Mr|Ms|Mrs)\. 来创建非捕获分组。它匹配 "Mr."、"Ms." 或 "Mrs.",后面跟着一个空格和一个单词。但由于使用了非捕获分组,我们只获取了匹配的单词部分。

pattern = r"(?:https?://)?(www\.\w+\.\w+)"
text = "Visit my website at https://www.example.com"

match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
else:
    print("No match found.")

# Match found: www.example.com

在这个示例中,我们使用了非捕获分组 (?:https?://) 来匹配可选的 "http://" 或 "https://"。(www\.\w+\.\w+) 匹配以 "www." 开头,后面跟着一个或多个单词字符,然后是一个点和一个或多个单词字符。我们只提取了网址部分,而不包括 "http://" 或 "https://"。 

  • 查找和替换:

pattern = r"apple"
text = "I have an apple and a banana."

new_text = re.sub(pattern, "orange", text)
print("Updated text:", new_text)

# Updated text: I have an orange and a banana.

在这个示例中,我们使用 re.sub() 函数来查找并替换匹配的文本。"apple" 是要查找的模式,"orange" 是要替换成的新文本。re.sub() 返回替换后的新字符串。 

  • 分割字符串 

pattern = r"\s+"
text = "Hello   world!  How are   you?"

parts = re.split(pattern, text)
print("Parts:", parts)

# Parts: ['Hello', 'world!', 'How', 'are', 'you?']

在这个示例中,我们使用 re.split() 函数根据指定的模式将字符串分割成多个部分。\s+ 匹配一个或多个空白字符,因此我们将字符串按照空白字符进行分割。

---------------

以下是一些常见的正则表达式普通字符的示例:

  1. 字母和数字字符:

    • 匹配小写字母 [a-z]
    • 匹配大写字母 [A-Z]
    • 匹配字母(大小写不区分) [a-zA-Z]
    • 匹配数字字符 [0-9]
    • 匹配字母或数字字符 [a-zA-Z0-9]
  2. 字符类:

    • 匹配给定的字符集合 [abc](匹配字符 'a'、'b' 或 'c')
    • 匹配不在字符集合内的字符 [^abc](匹配除了字符 'a'、'b' 和 'c' 之外的任意字符)
    • 匹配范围内的字符 [a-z](匹配任意小写字母)
  3. 数量限定符:

    • 匹配零次或一次出现的字符 ?
    • 匹配零次或多次出现的字符 *
    • 匹配一次或多次出现的字符 +
    • 匹配指定次数出现的字符 {n}
    • 匹配至少n次出现的字符 {n,}
    • 匹配n到m次出现的字符 {n,m}
  4. 转义字符:

    • 匹配特殊字符本身,而不是其元字符含义 \., \[, \(, \\

这些都是普通字符的示例,它们在正则表达式中按照字面意义进行匹配。当你希望匹配这些字符时,可以直接使用它们,而不需要进行特殊处理。当然,如果某个普通字符与元字符重叠,你可能需要使用转义字符来确保它的字面意义。

元字符(metacharacters)在正则表达式中具有特殊的含义和功能。它们用于定义模式中的特殊字符或字符类,以实现更灵活的匹配规则。以下是一些常见的正则表达式元字符:

  1. . (点号):匹配任意字符,除了换行符 \n

  2. ^(脱字符):匹配输入字符串的开头。在多行模式下,它也匹配行的开头。

  3. $(美元符号):匹配输入字符串的结尾。在多行模式下,它也匹配行的结尾。

  4. *(星号):匹配前面的元素零次或多次。

  5. +(加号):匹配前面的元素一次或多次。

  6. ?(问号):匹配前面的元素零次或一次。

  7. {}(花括号):指定前面的元素重复的次数。例如,{n} 表示前面的元素重复 n 次,{n,} 表示前面的元素重复至少 n 次,{n,m} 表示前面的元素重复 n 到 m 次。

  8. [](方括号):定义一个字符类,匹配方括号中的任意字符。例如,[abc] 表示匹配字符 'a'、'b' 或 'c'。

  9. |(竖线):表示或的关系,用于在模式中选择多个模式中的一个。

  10. ()(圆括号):创建一个分组,可以对分组中的内容进行重复、引用或应用其他操作。

  11. \(反斜杠):转义字符,用于匹配特殊字符本身,或者给特殊字符赋予字面意义。

这些元字符在正则表达式中具有特殊的含义和功能,可以用于定义更复杂的匹配规则。在使用这些元字符时,需要小心转义字符的使用,以确保元字符被解释为其特殊含义而不是字面字符。

在正则表达式中,字符匹配指的是匹配具体的字符或字符类。以下是一些字符匹配的示例:

  1. 匹配具体字符:

    • 匹配字符 'a':a
    • 匹配字符 'X':X
    • 匹配字符 '9':9
  2. 字符类:

    • 匹配任意小写字母:[a-z]
    • 匹配任意大写字母:[A-Z]
    • 匹配任意字母(大小写不区分):[a-zA-Z]
    • 匹配任意数字字符:[0-9]
    • 匹配特定的字符集合:[abc](匹配字符 'a'、'b' 或 'c')
  3. 转义字符:

    • 匹配特殊字符本身,而不是其元字符含义:\. 匹配点号,\[ 匹配左方括号,\\ 匹配反斜杠等
  4. 元字符的字符类:

    • 匹配任意非空白字符:\S
    • 匹配任意空白字符:\s
    • 匹配任意数字字符:\d
    • 匹配任意非数字字符:\D
    • 匹配任意单词字符(字母、数字或下划线):\w
    • 匹配任意非单词字符:\W
  5. 点号 .

    • 匹配除了换行符 \n 外的任意字符

这些示例展示了不同方式的字符匹配。你可以根据需要选择合适的字符或字符类,来匹配你想要的具体字符。

需要注意的是,在使用某些特殊字符时,可能需要使用转义字符 \ 进行转义,以确保其被解释为字面字符而不是元字符。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 正则表达式RE知识学习 的相关文章

  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • Python While 循环,and (&) 运算符不起作用

    我正在努力寻找最大公因数 我写了一个糟糕的 运算密集型 算法 它将较低的值减一 使用 检查它是否均匀地划分了分子和分母 如果是 则退出程序 但是 我的 while 循环没有使用 and 运算符 因此一旦分子可整除 它就会停止 即使它不是正确
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有

随机推荐

  • Python-Anaconda最新安装图文教程

    Anaconda简介 Anaconda是一种数据科学和机器学习的开发环境 它包含了大量的Python包 工具和库 以及可视化界面和集成开发环境 Anaconda可以方便地管理Python环境和安装第三方软件包 同时也支持多个操作系统和平台
  • vue 组件通信方式你知道几种,这6种一定得掌握

    第一种props 适用于的场景 父子组件通信 注意事项 如果父组件给子组件传递数据 函数 本质其实是子组件给父组件传递数据 如果父组件给子组件传递的数据 非函数 本质就是父组件给子组件传递数据 书写方式 3种 todos type Arra
  • PTP(Precision Time Protocol)高精度时间同步协议+CS模式测试代码

    Precision Time Protocol PTP 一 什么是PTP PTP 是一种高精度时间同步协议 可以到达亚微秒级精度 有资料说可达到30纳秒左右的偏差精度 但需要网络的节点 交换机 支持PTP协议 才能实现纳秒量级的同步 一般在
  • 深入浅出 redux中间件

    redux中间件是什么 理解redux中间件首先我们需要理解redux是什么 Redux是JavaScript应 的状态容器 它保证程序 为 致性且易于测试 当业务足够复杂时 我们就需要使用redux来存储我们的多页面共同数据 redux的
  • 现行安全存储策略-密码加盐

    本文描述了本人 对于数据库中如何保存密码的认识过程 从最简单的明文保存到密码加盐保存 下面与大家分享下 第一阶段 最开始接触web开发时 对于用户表的密码基本是明文保存 如 username password zp1996 123456 z
  • 利用js实现简单抽奖功能

    其实这种抽奖的功能和选人是一样的 在点击开始按钮之后 标题上方的名字可以实现一个不停的变化 在点击停止之后抽出获奖的名字 在写之我们必须明确一点的是需要用到哪些方法 并且将基础的框架搭建出来 下面是功能实现的视频展示 如下 抽奖 基本的样式
  • OpenCv案例(四): 基于OpenCvSharp对图像轮廓提取与面积和周长计算

    1 需求 提取图像中物体的轮廓以及计算该面积和周长 2 详细代码如下 public static void GetOutline try region 加载图像 Mat src Cv2 ImRead srcImg bmp if src Em
  • python连接Oracle数据库代码

    import cx Oracle as oracle db oracle connect 用户名 密码 IP 端口号 SERVICE NAME db oracle connect admin password IP 1521 DataBas
  • 微信小程序把页面做成图片分享【原创】

    开发微信小程序的时候 经常要遇到如上图这样的 保存小程序二维码图片的分享功能 网上找了很多都没有具体的写法 于是自己看官方文档写了一个 分享一下 首先 需要在 wxml 中 创建一个 画板 canvas wxml
  • Matlab 绘制虚数和复数数据图

    Matlab 绘制虚数和复数数据图 在 Matlab 中 我们可以使用 plot 函数来绘制实数数据图 但是当数据包含虚部时 我们需要使用另一种方式来绘制 Matlab 中的虚数和复数数据可以用两种方式表示 一种是把虚数表示为 i 即 j
  • 6.3-训练DNN的技巧

    文章目录 一 新的激活函数 New activation function 1 1 校正线性单元 Rectified Linear Unit 1 2 Maxout 二 自适应学习率 Adaptive Learning Rate 2 1 Mo
  • 红帽子Linux6.5 X86_64 自动重启解决办法

    机器重启前的15分钟 都会有一个报错 usr sbin bmc watchdog fiid obj get present countdown value data not available redhat对此有说明https access
  • qt中的tableView中的排序

    一 第三列的排序方式 1 第3列是按照升序来排列 ui gt tableView gt sortByColumn 3 Qt AscendingOrder 第3列是按照升序来排列 ui gt tableView gt setSortingEn
  • 弱网测试—Network-Emulator-Toolkit

    弱网测试 属于健壮性测试 怎么样去做弱网测试呢 一 安装弱网测试工具 Network Emulator Toolkit 推荐一个工具 Network Emulator Toolkit 这个工具的作用主要是设置丢包率和延时 1 安装与卸载 下
  • 怎么使用Web3.js开发一个简单的Dapp

    通过这篇文章 我们将学习 Dapps 和 Web3js 的基础知识 让我们了解一下基本术语 区块链 去中心化应用程序 以太坊 智能合约 web3js 区块链 区块链是一个可审计且不可逆的数据库 其中数据只能添加 在区块链中 数据可以作为块添
  • elasticSearch详细教程

    一 Elasticsearch简介 Elasticsearch是使用Java编写的一种开源搜索引擎 它在内部使用Luence做索引与搜索 通过对Lucene的封装 提供了一套简单一致的RESTful API Elasticsearch也是一
  • 数据结构中Java实现KMP与BF算法对比

    public class KMPANDBF public int indexBfCount SeqString s SeqString t int begin int slen tlen i begin j 0 int count 0 sl
  • Scipy

    10 1 import numpy as np import scipy optimize as opt m 20 n 10 A np random normal loc 10 scale 3 size m n b np random no
  • 【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

    题目 1 有5个学生 每个学生有3门课程的成绩 从键盘输入以上数据 包括学号 姓名 3门课成绩 计算出平均成绩 将原有数据和计算出的平均分数存放在磁盘文件stud中 设5名学生的学号 姓名和3门课成绩如下 在向文件stud写入数据后 应检查
  • Python 正则表达式RE知识学习

    正则表达式 Regular Expression 是一种强大的文本模式匹配工具 常用于在字符串中查找 替换 分割等操作 在 Python 中 可以使用内置的 re 模块来操作正则表达式 ChatGPT编写 下面是一些需要掌握的正则表达式知识