对于假期作业,在密码检查python程序中,我想使用 regexs 来查找名称(或名称的“一部分”,表示2)用户提供的密码中包含连续的字母)。
假设用户名为 Samuel :
将匹配的密码:
samuel sAm123 123Sam lSAMUo sa
不匹配的密码:
s3m leumas sml s123
到目前为止,我仅成功完成了此不完整的正则表达式:
<link href="https://unpkg.com/quasar-extras@latest/material-icons/material-icons.css" rel="stylesheet"/>
<script src="https://unpkg.com/vue@latest/dist/vue.js"></script>
<link rel="stylesheet" type="text/css" href="https://unpkg.com/quasar-framework@latest/dist/umd/quasar.mat.min.css">
<script src="https://unpkg.com/quasar-framework@latest/dist/umd/quasar.mat.umd.min.js"></script>
<div id="app">
<search :search-criteria="searchCriteria" @search-string="updatedSearchString"></search>
<div v-for="(doc, index) in filteredDocuments" v-bind:key="index">
<div>{{doc.filename}}</div>
</div>
</div>
<template id="child-template">
<div>
<q-search v-model="search" placeholder="Search" />
</div>
</template>
但是,如果密码中只有一个来自正则表达式的字母,并且不是连续的2个字母,它也会匹配。
如何增强正则表达式?
当我使用[sS]?[aA]?[mM]?[uU]?[eE]?[lL]?
包中的search
函数时,只有在字符串开始时,它才与我以前的正则表达式匹配。这是一个应该起作用的案例的示例代码:
re
我想念什么?
答案 0 :(得分:0)
您可以尝试:
import re
pattern = r"(?i)sa|am|mu|ue|el"
for _string in ("samuel", "sAm123", "1235Sam", "lSAMUo", "sa"):
assert re.search(pattern, _string) is not None
for _string in ("s3m", "leumas", "sml", "s123"):
assert re.search(pattern, _string) is None
这里的主要目的是:
re.search()
而不是re.match()
,就像documentation所说的那样:
如果要在字符串中的任意位置找到匹配项,请改用search()(另请参阅search()vs. match())。
(?i)
使正则表达式不区分大小写在问题评论中建议使用成对字符的@sin积分