嗯,我想这就是我的标题,这对于我将要实现的目标来说是不言自明的。
这是我当前的文本文件的示例:
"Diva" was the winning song of the Eurovision Song Contest 1998.
Who will win Eurovision Song Contest 2015?
Eurovision Song Contest Statistics:
Who will win Eurovision 2015?
Run Code Online (Sandbox Code Playgroud)
这就是我想要得到的:
"Diva" was the winning song of the Eurovision Song Contest 1998.
Eurovision Song Contest Statistics:
Run Code Online (Sandbox Code Playgroud)
因此基本上包含该?字符的每一行(该位置不一定必须在该行的末尾)将被替换为任何内容。
我已经尝试过,[^\r\n]*?[^\r\n]*([\r\n]+|$)但它删除了太多。
我正在阅读Jan Goyvaerts 的“正则表达式:完整教程和参考”来补充我的正则表达式。
在第二章中,Jan 有一节关于“特殊字符”:
特殊的角色
因为我们想要做的不仅仅是搜索文本的文字片段,所以我们需要保留某些字符以供特殊用途。在本教程讨论的正则表达式中,有 12 个具有特殊含义的字符:反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或管道符号 |、问号 ?、星号或星号 *、加号 +、左括号 (, 右括号 )、左方括号 [ 和左花括号 {,这些特殊字符通常被称为“元字符”。大部分单独使用时都会出错。
(强调我的)
我知道只有开方括号和开大括号是特殊的,因为如果没有前面的开,则右括号或括号显然是文字。但是,如果其他两个关闭的不是特殊字符,为什么 Jan 指定关闭括号是一个特殊字符?
s = "Bob hit a ball!, the hit BALL flew far after it was hit."
Run Code Online (Sandbox Code Playgroud)
我需要从 s 中删除以下字符
!?',;.
Run Code Online (Sandbox Code Playgroud)
如何使用 re.sub 来实现这一点?
re.sub(r"!|\?|'|,|;|."," ",s) #doesn't work. And replaces all characters with space
Run Code Online (Sandbox Code Playgroud)
有人能告诉我这有什么问题吗?
我多年来一直使用它git grep来搜索固定字符串,但很少使用它来进行正则表达式搜索。
我的代码中有一些带有非本地化字符串的地方。例如:
\n JLabel label = buildLabel("Alphabet");\nRun Code Online (Sandbox Code Playgroud)\n在本例中buildLabel()是继承的实用方法。还有buildBoldLabel()、buildMultiLineLabel()、 和buildTextArea()。
因此,我想在我的代码中搜索这些方法的使用,而不查找本地化字符串。正确的调用应该是:
\n JLabel label = buildLabel(getString("Alphabet"));\nRun Code Online (Sandbox Code Playgroud)\n我非常熟悉正则表达式,并且我发现它git grep支持 Perl 字符类。所以我想这会很容易:
$ git grep -P "buildLabel(\\"\\w+\\")"
这不会返回任何结果。所以我在没有 Perl 扩展的情况下尝试了它。
\n$ git grep "buildLabel(\\"[a-zA-Z_]+\\")"
还是……没有结果。我验证了我可以使用固定字符串进行搜索。
\n$ git grep "buildLabel(\\"Alphabet\\")"
这返回了我已经知道存在的代码中的实例。然而 ...
\n$ git grep -P "buildLabel(\\"Alphabet\\")"
不返回任何结果。
\n我还尝试更改引号字符并得到相同的结果。
\n$ git grep -P 'buildLabel("\\w+")'... 没有结果
text = "Bob|19|01012017"
pat = re.compile("(?P<name>.+)|.*|(?P<bday>.+)") #hopefully this regex is correct
result = pat.match(text)
d = result.groupdict()
print d
Run Code Online (Sandbox Code Playgroud)
我得到的 d 是:
{'bday': None, 'name': 'Bob|19|01012017'}
Run Code Online (Sandbox Code Playgroud)
我想要的是:
{bday: "01012017", name: "Bob"}
Run Code Online (Sandbox Code Playgroud)
有人可以指出我做错了什么吗?我只需要 dict 的两个字段,所以我没有写年龄部分。
如何用html替换replace()?
<div>
<a href="http://www.google.com">google.com</a>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var e = $("div"),
fix = e.html().replace("google.com", "duckduckgo.com");
e.html(fix);
Run Code Online (Sandbox Code Playgroud)
我猜html()的工作方式不一样text()吗?
说我有这个数据:
hi helo tmp#100000 bye
100000 hi bye
hi 100000 bye
Run Code Online (Sandbox Code Playgroud)
并且 100000 是可变的: $var 我只想将 100000 作为一个完整的词 grep ,所需的输出:
100000 hi bye
hi 100000 bye
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有在 StuckOverflow 中得到回答的东西,但似乎没有任何效果:
grep "\b$var\b", grep -E "[[:blank:]]$var[[:blank:]]"还有更多。我认为问题,可能在#. 该解决方案需要适用于变量等于:hi.*bye作为正则表达式的情况。
请帮忙
假设我有以下代码块:
String x = "Hello ++ World!";
if(x.contains(" ++ "))
System.out.println(x.split(" ++ ")[0]);
Run Code Online (Sandbox Code Playgroud)
为什么执行此代码时会收到输出:
Hello ++ World!代替Hello?显然,它与有关split(),但是,我无法弄清楚。
select Values, REGEXP_COUNT(values,'|') from Products
Run Code Online (Sandbox Code Playgroud)
样本值单元格:
Product|Cash|Loan|Customer
Run Code Online (Sandbox Code Playgroud)
选择的结果是27。如果算其他字符,它可以工作,但是如果我要算| 它计算整个字符串。为什么,如何计数管道?