工作解决方案:
import re
import sys
lines = sys.stdin.readlines()
n=int(lines[0])
q=int(lines[n+1])
N=lines[1:n+1]
S=lines[n+2:]
text = "\n".join(N)
for s in S:
print(len(re.findall(r"(?<!\W)(?="+s.strip()+r"\w)", text)))
破“解”:
import re
import sys
lines = sys.stdin.readlines()
n=int(lines[0])
q=int(lines[n+1])
N=lines[1:n+1]
S=lines[n+2:]
for s in S:
total=0
for string in N:
total += len(re.findall("(?<!\W)(?="+s.strip()+"\w)", string))
print(total)
我们将单词字符定义为以下任一项:
第一行包含一个整数n,表示句子的数目。后面的每一行都包含一个由非单词字符分隔的单词组成的句子。下一行包含一个整数,表示查询的数量。后续行中的每一行都包含一个要检查的字符串。
制约因素
1
existing pessimist optimist this is
1
is
3
接下来,我们将所有单词的子单词的出现次数加起来为1+1+1+0+0=3。因此,我们在新的行上打印3。
>
如果不将字符串指定为原始字符串,regex元字符实际上会被解释为特殊的转义字符,并且模式不会像您预期的那样匹配。
由于不再在多行字符串内部查找,因此需要将修改负查找后面添加到正查找后面:(?<=\w)
正如Wiktor在他的评论中提到的,转义s.strip
将是一个好主意,这样可以将任何可能被视为regex元字符的字符转义并按字面意思表示。您可以使用re.escape(s.stripe())
。
total += len(re.findall(r"(?<\w)(?=" + re.escape(s.strip()) + r"\w)", string))
问题内容: 使用正则表达式的python中的代码可以执行类似这样的操作 谢谢 问题答案: 这是您需要做的所有事情: 正如叶立昂指出:(我几乎引用) 是的“非贪婪”版本。它使正则表达式匹配的字符数最少,而不是最多。贪婪的版本会给出字符串;非贪婪版本‘String 1,String 2,String3’ 另外(再次使用Johan,),如果您想接受空字符串,请更改为。星号表示零个或多个-加号表示至少一个
问题 你需要搜索一个字符串,并返回匹配的起始位置或匹配值本身。 解决方案 有几种使用正则表达式的方法来实现这个功能。其中一些方法被称为 RegExp 模式或对象还有一些方法被称为 String 对象。 RegExp 对象 第一种方式是在 RegExp 模式或对象中调用 test 方法。test 方法返回一个布尔值: match = /sample/.test("Sample text") # =>
问题 你想在一条消息中查找某个关键字第一次或最后一次出现的位置。 解决方案 分别使用 JavaScript 的 indexOf() 和 lastIndexOf() 方法查找字符串第一次和最后一次出现的位置。语法: string.indexOf searchstring, start message = "This is a test string. This has a repeat or two
问题内容: 我正在寻找一种在字符串中查找JSON数据的方法。像wordpress简码一样思考它。我认为最好的方法是使用正则表达式。我不想解析JSON,只需查找所有出现的事件。 正则表达式中是否有办法使括号的数量匹配?目前,当我嵌套对象时遇到了这个问题。 演示的快速示例: 结果,我想要两个JSON字符串。谢谢! 问题答案: 从给定的文本中提取JSON字符串 由于您正在寻找一种简单的解决方案,因此可以
问题内容: 我有: 功能: 和一个字符串:, 我本质上是想输入并返回,但是我却不断地返回。 码: 不知道怎么了! 问题答案: 理想情况下,您会 像痴呆的刺猬说的那样 使用 str.find 或 str.index 。但是你说你不能… 您的问题是您的代码仅搜索搜索字符串的第一个字符(第一个字符在索引2)。 您基本上是说if是in ,递增直到我测试它返回3时,但这仍然是错误的。这是一种方法。 它产生了
我正在尝试使用正则表达式替换单词。但不管用。 我试图只替换有一个点的单词(.)