该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。 现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。 输入格式 输入共 33 行。...第 11 行是包含多个单词的字符串 ss; 第 22 行是待替换的单词 aa(长度不超过 100100); 第 33 行是 aa 将被替换的单词 bb(长度不超过 100100)。...输出格式 共一行,输出将 ss 中所有单词 aa 替换成 bb 之后的字符串。
题目 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串。 返回字符串数目。 子字符串 是字符串中的一个连续字符序列。...- "abc" 是 "abc" 的子字符串。 - "bc" 是 "abc" 的子字符串。 - "d" 不是 "abc" 的子字符串。...patterns 中有 3 个字符串作为子字符串出现在 word 中。...- "b" 是 "aaaaabbbbb" 的子字符串。 - "c" 不是 "aaaaabbbbb" 的字符串。 patterns 中有 2 个字符串作为子字符串出现在 word 中。...示例 3: 输入:patterns = ["a","a","a"], word = "ab" 输出:3 解释:patterns 中的每个字符串都作为子字符串出现在 word "ab" 中。
,当然也会有匹配非单词边界的需求,如果你想查找包含 hi 的单词,试一试下面的表达式吧: hi\B 怎么样,简单吧,注意以上元字符匹配的是一个边界,而不是具体的字符。...呵呵,如果 you 这个单词出现在一行的末尾,试一试,你还能用这个表达式搜索出来吗? 记住排除型字符组的意思是匹配一个未列出的字符,而不是不要匹配列出的字符。 那么正确的做法是什么呢?...它的意思是匹配字母 u, 且 u 的右边不是 x。那我想查找 u 后面是 x 的单词该怎么办呢?试一试下面的表达式吧: u(?=x) 那我想查找 u 前面是 x 的单词该怎么办呢?...我们把这四个元字符称为环视(lookaround),它们和我们之前学过的单词分界符,行的起始和结束符一样,它们只匹配位置,而不匹配具体的字符,了解这一点很重要。...更简单点说,y 是可有可无的。怎么样?简单吧。之前我们学习了如何匹配空行,还记得吗?
2021-05-22:假设所有字符都是小写字母, 大字符串是str,arr是去重的单词表, 每个单词都不是空字符串且可以使用任意次。使用arr中的单词有多少种拼接str的方式。返回方法数。...传统方法的时间复杂度是O(N**3)。 代码用golang编写。
序列 '\' 匹配 "",而 '(' 则匹配 "("。 ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。...以下正则表达式匹配一个正整数, [1-9] 设置第一个数字不是 0, [0-9]* 表示任意多个数字: ➜ ~ echo 'ddddd1235ffff' | sed -E 's/[1-9][0-9]*...如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。 $ 匹配输入字符串结尾的位置。...如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。 \b 匹配一个单词边界,即字与空格间的位置。 \B 非单词边界匹配。...它即出现在行首又出现在同一行的结尾。下面的表达式能确保指定的匹配只匹配章节而不匹配交叉引用。通过创建只匹配一行文本的开始和结尾的正则表达式,就可做到这一点。
cap 结束的任意单词。...这里总共找到了 2 个匹配,其中有一个不是独立的单词 cap。如果只想匹配单词 cap 本身,那么正确的模式应该是 \bcap\b。 b 匹配的是一个位置,而不是任何实际的字符。...同一个元字符的大写形式与它的小写形式在功能上往往刚好相反。 三、字符串边界 单词边界可以用来对单词位置进行匹配,如单词的开头、单词的结尾、整个单词等。...只有当它出现在字符集合里,即位于 [ 和 ] 之间,且紧跟在左方括号的后面时,它才表示排除该字符集合。如果出现在字符集合之外并位于模式的开头,^ 将匹配字符串的起始位置。...> 匹配到的是第 2 行文本。因为 XML 文档的起始标签出现在了第 2 行,所以这肯定不是有效的 XML 文档,将其作为 XML 文档来处理会导致各种问题。
下面的正则表达式匹配编号为任何位数的章节标题: /Chapter [1-9][0-9]*/ 请注意,限定符出现在范围表达式之后。...如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。 $ 匹配输入字符串结尾的位置。...如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。 \b 匹配一个字边界,即字与空格间的位置。 \B 非字边界匹配。...它即出现在行首又出现在同一行的结尾。下面的表达式能确保指定的匹配只匹配章节而不匹配交叉引用。通过创建只匹配一行文本的开始和结尾的正则表达式,就可做到这一点。...上面的句子很显然有多个重复的单词。如果能设计一种方法定位该句子,而不必查找每个单词的重复出现,那该有多好。
匹配单个字符 ? 1.4 “*”表示之前的字符连续出现任意次数(包括0次) ? 正则表达式的贪婪性,匹配到最后一个不能匹配的字符 ?...\{x,y\} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。...\{,n\} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。 \{n,\}表示之前的字符连续出现至少n次,才会被匹配到。...1.19.3 位置边界匹配相关 ^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。 $:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。...^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。 ^abc$:表示abc独占一行时,会被匹配到。
,而作为正则表达式的语法(元字符)的存在; \b : 匹配单词的开始或结束; \B :匹配非单词的开始或结束; ^ :匹配必须出现在字符串的开头或行的开头...; $: 匹配必须出现在以下位置:字符串结尾,字符串结尾处的\n之前或行的结尾; \A: 指定匹配必须出现在字符串的开头(忽略Multiline选项);...\z: 指定匹配必须出现在字符串的结尾(忽略Multiline选项); \Z: 指定匹配必须出现在字符串的结尾或字符串结尾处的\n之前(忽略Multiline...(除了“0-9数字”); \B :匹配不是单词开头或结束的位置; [abc] :匹配括号中的字符; [a-c] :a字符到c字符之间是字符;...[^x] :匹配除了x以外的任意字符; [^adwz] : 匹配除了adwz这几个字符以外的任意字符; 实例: string str="I am a
\W 匹配不是字母或数字或汉字或下划线的字符 \s 匹配任意的空白符,如空格、换行符、制表符等 \S 匹配非空白符的字符 ....-9]+/匹配0-9最少一个多则不限 定位符 定位符 说明 ^ 定位开始位置字符 $ 定位结束位置字符 \b 定位单词(汉字)边界的字符 \B 限定非单词(字)边界的字符 举例1: var re=/...ok\b/ 匹配ok结尾的,可以匹配imok ok拉 哇ok拉 但是不匹配okk imokk \b是匹配单词或者汉字边界 举例2: var re=/ok\B/ 匹配单词或者汉字边界不是ok的字符...,不匹配imok ha 可以匹配ABCoka 和用法相反,不匹配 ^说明:^出现在开始是标准匹配的开始;出现在[^...]的^表示不匹配方括号内的字符起否定作用....一旦启用了该选项,即符号#之后的内容会全部被忽略掉。 正则表达式优先级 什么是优先级?
例如,会把“con”替换掉,但不会替换“concord”,所以 这是有效的文件名。 其中 ,^匹配字符串的开头。 它确保没有其他字符出现在我们要匹配的字符串之前,$则匹配字符串的结尾。...也就是匹配一个或多个空格 g 告诉正则表达式引擎匹配所有匹配项,而不是在第一次匹配后停止 上面的结果是替换了至少重复两次的所有空白字符。...,它确保没有其他字符出现在我们要匹配的字符串之前。...来看看这段代码是如何工作的: \b匹配单词边界的位置 (https?|ftp|file) 匹配字符https,http,ftp或file。...\b 匹配单词的边界 \w 匹配单词字符 + 匹配上一项的一次或多次 \1 是一个反向引用,它表示在第一对括号中所匹配的文本 \b 匹配单词边界 g 告诉正则表达式引擎匹配所有匹配项,而不是在第一次匹配后停止
值得注意的是,recipe 默认以制表符开头,而不是空格。 2.2 运行 make 在当前目录下创建一个 Makefile 文件, 命名为 Makefile 。...可以理解是纯粹的任务,而不生成文件。...既可以出现在目标,先决条件,也可以出现在“菜谱”的 shell 命令中;可以是命令本身,也可以是命令的选项,或者输入输出文件;甚至也可以出现在另一个变量的引用中(计算变量)。...,如果单词匹配 pattern , 就将匹配的单词替换成 replacement 。...pattern 和 replacement 都可以包含通配符 %,匹配任意数量的任意字符。
冷静分析: 1.当切分出一个单词时,若该单词已出现过,那么这个单词对应的pattern字符,必须也是之前出现时对应的pattern字符 2.当切分出一个单词时,若该单词没有出现过,则与之对应的...好了,知道怎么用hash map之后,我们可以这样处理逻辑: 1.建立单词到单个字符的哈希映射,使用数组used[128]来标志,当前的单个字符是否已被使用 2.遍历单词字符串str,按照空格切分单词,...同时移动pattern下标,判断: 如果该单词从未出现在哈希表中: 如果当前的pattern单个字符已被使用,返回false,不匹配; 如果当前pattern字符没被使用...,那么: 建立该单词到单个字符的映射,同时标记单个字符已被使用; 如果该单词出现在了哈希表中: 检查该单词应该匹配的字符,是否与当前pattern字符相同,如果相同...,与end函数返回的迭代器指针相同,即,当该单词从未出现在哈希map中 if (used[pattern[position]]){//若当前pattern字符已使用,返回错误
作用是给指定位置添加一个限定条件,用来规定此位置之前或者之后的字符必须满足限定条件才能使正则中的字表达式匹配成功。...[A-Z])",它从位置2处开始匹配,它要求所在位置的右边不能够是任意一个大写字母,而位置的右边是大写字母"Z",匹配失败,然后控制权又重新交给字符"a",并从位置1处开始尝试,匹配失败,然后控制权再次交给字符...零宽断言 用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。...接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。...= 子表达式) 零宽度正预测先行断言仅当子表达式在此位置的右侧匹配时才继续匹配。 例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。
正则表达式语言相对较小,并且受到限制,所以不是所有可能的字符串处理任务都可以使用正则表达式来完成。还有一些特殊的任务,可以使用正则表达式来完成,但是表达式会因此而变得非常复杂。...如果设置了 re.MULTILINE 标志,^ 也匹配换行符之后的位置 $ 1. 匹配输入字符串的结束位置2. 如果设置了 re.MULTILINE 标志,$ 也匹配换行符之前的位置 \ 1....字符类,匹配所包含的任意一个字符注1:连字符 - 如果出现在字符串中间表示字符范围描述;如果如果出现在首位则仅作为普通字符注2:特殊字符仅有反斜线 \ 保持特殊含义,用于转义字符。...等均作为普通字符匹配注3:脱字符 ^ 如果出现在首位则表示匹配不包含其中的任意字符;如果 ^ 出现在字符串中间就仅作为普通字符匹配 {M,N} M 和 N 均为非负整数,其中 M <= N,表示前边的..."(注意,因为子组后边还有一个空格) \A 匹配输入字符串的开始位置 \Z 匹配输入字符串的结束位置 \b 零宽断言,匹配一个单词边界,单词被定义为 Unidcode 的字母数字或下横线字符举个栗子:\
如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。...如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 * 匹配前面的子表达式任意次。例如,zo能匹配“z”,也能匹配“zo”以及“zoo”。...当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。...预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 (?!...\b 匹配一个单词边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的)。
在“视觉单词袋”中,我们的输入是图像而不是文本文档,并且我们使用视觉单词来描述图像。 ? 文字文档袋 ? 图像视觉词袋 ?...视觉单词 在BovW中,我们将图像分解为一组独立的特征,特征由关键点和描述符组成,关键点与兴趣点是同一件事。它们某些是空间位置或图像中的点,这些位置定义了图像中的突出部分。...它们受图像的旋转、缩放、平移,变形等等因素的影响。描述符是这些关键点的值(描述),而创建字典时所使用聚类算法是基于这些描述符进行的。我们遍历图像并检查图像中是否存在单词。如果有,则增加该单词的计数。...检测视觉单词 现在我们将创建一个(N,K)的二维数组,我们将在接下来的几行中看到如何填充此数组。...TF-IDF加权 该公式清楚的表达了图像中每个的单词的重要性是如何定义的。 ? 在经过加权之后的直方图中可以看出,蓝色单词的权重几乎为零。
例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。...如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。...预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 (?!...例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。 \b 匹配一个单词边界,也就是指单词和空格间的位置。...而正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字
\w+:负责匹配电子邮件地址中第一个字符(一个字母数字字符,但是不包括.)。 [\w.]*:负责匹配电子邮件第一个字符之后、@字符之前的所有字符——这个部分可以包含零个或多个字母数字字符和.字符。...这个正则表达式匹配了所有字符,而不是预期的标签内的内容。为什么会这样?因为*和+都是所谓的贪婪型元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的。 在不需要这种“贪婪行为”的时候该怎么办?...\b匹配的是这样的位置,这个位置位于一个能够用来构成单词的字符(字母、数字和下划线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(\W)之间。 如果不想匹配单词边界,使用\B。...字符串边界 单词边界可以用来进行与单词有关的位置匹配(单词的开头、单词的结束、整个单词)。字符串边界有着类似的用途,用来进行与字符串有关的位置匹配(字符串的开头、字符串的结束、整个字符串)。...小结 正则表达式不仅可以用来匹配任意长度的文本块,还可以用来匹配出现在字符串中特定位置的文本。\b用来指定一个单词边界(\B刚好相反)。^和$用来指定字符串边界(字符串的开头和结束)。
序列 ‘\‘ 匹配 “",而 ‘(‘ 则匹配 “(“。 ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。 { 标记限定符表达式的开始。...如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。 $ 匹配输入字符串结尾的位置。...上面的句子很显然有多个重复的单词。如果能设计一种方法定位该句子,而不必查找每个单词的重复出现,那该有多好。...若要防止匹配被保存以备将来使用,请在括号内正则表达式模式之前放置 ?:。下面的修改提供相同的能力而不保存子匹配项: /^(?...例如,如果上面的表达式匹配 Windows 98,将在 Windows 之后而不是在 98 之后继续搜索。
领取专属 10元无门槛券
手把手带您无忧上云