我需要一个像preg_replace一样的函数,但我需要它来处理文件/文件内容而不是字符串.
看起来很简单吧?好吧,我不知道.
这是我正在尝试的代码:
input = Regex.Replace(input, "\\", "\\\\\\");
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误,
ArgumentException未处理 - 在模式结束时解析"\" - 非法\.
我该怎么做呢?
我知道nano搜索和替换功能,但它是否能够使用正则表达式进行匹配和替换(特别是使用匹配的一部分的替换)?如果是这样,你能提供一些所用语法的例子(匹配和替换)吗?
我对Perl风格的正则表达式进行了研究,但我发现文本编辑器有时会提出自己的语法.
我想替换卷曲引号:
str = '“I don’t know what you mean by ‘glory,’ ” Alice said.';
Run Code Online (Sandbox Code Playgroud)
使用:
str.replace(/['"]/g,'');
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用?我怎样才能做到这一点?
我有三个片段,如下图所示.我使用.xml文件在LinearLayout中添加了所有这三个片段,当我的启动器活动开始时,我使用setContentView加载.xml布局.
我对fragment2有一些控制.单击任何一个使用FragmentTransaction和commit方法以编程方式加载fragment4.这个片段被添加到屏幕上,但问题是以编程方式添加的片段4占据整个屏幕区域.可能是什么问题?
注意:在任何项目上单击f2我只想用新的片段f4替换f2.请记住,我已经通过xml布局文件添加了f1,f2,f3并以编程方式添加了新的片段f4.
使用Powershell,我知道如何使用正则表达式搜索文件中的复杂字符串,并用一些固定值替换它,如下面的代码片段所示:
Get-ChildItem "*.txt" |
Foreach-Object {
$c = ($_ | Get-Content)
$c = $c -replace $regexA,'NewText'
[IO.File]::WriteAllText($_.FullName, ($c -join "`r`n"))
}
Run Code Online (Sandbox Code Playgroud)
现在我想弄清楚如何替换正则表达式的每个匹配的子部分.这可以像上面一样顺利完成吗?或者你是否必须提取较大的正则表达式的每个匹配,在其中搜索和替换,然后以某种方式将结果粘贴回原始文本?
为了澄清一个例子,假设在下面的测试文本中我想在下面的文本中只找到14xx编号的实例,如"TEST =*1404",并用16xx替换14xx?
A 2180 1830 12 0 3 3 TEST=C1404
A 900 1830 12 0 3 3 TEST=R1413
A 400 1830 12 0 3 3 TEST=R1411
A 1090 1970 12 0 3 3 TEST=U1400
A 1090 1970 12 0 3 3 TEST=CSA1400
A 1090 1970 12 0 3 3 TEST=CSA1414
A 1090 1970 12 0 3 …Run Code Online (Sandbox Code Playgroud) 我想替换
#{account_nbr}
Run Code Online (Sandbox Code Playgroud)
同
{{account_nbr}}
Run Code Online (Sandbox Code Playgroud)
在发现中,我试过这个:
\#\{()\w+\1\}
Run Code Online (Sandbox Code Playgroud)
在替换中,这:
{{\$1}}
Run Code Online (Sandbox Code Playgroud)
该查找似乎有效,但我无法正确获得反向引用.
怎么了?
我有一个包含1列和多行的excel文件.
行包含各种文本,这是一个示例:
texts are home
texts are whatever
dafds
dgretwer
werweerqwr
texts are 21412
texts are 346345
texts are rwefdg
terfesfasd
rwerw
Run Code Online (Sandbox Code Playgroud)
我想替换"文本是*",其中*是"文本是"之后的任何内容,具有特定的单词,例如"文本被替换".我怎么能在Excel中这样做?
我需要三个快速大字符串函数:快速搜索,快速搜索和替换,以及字符串中子字符串的快速计数.
我在C++和Python中遇到过Boyer-Moore字符串搜索,但是用于实现快速搜索和替换的唯一Delphi Boyer-Moore算法是由Peter Morris(前身为DroopyEyes软件)及其网站的FastStrings的一部分.和电子邮件不再有效.
我已经将FastStrings移植到Delphi 2009/2010的AnsiStrings中,其中一个字节等于一个AnsiChar,但是使它们也可以在Delphi 2010中使用String(UnicodeString)显得非常重要.
使用这个Boyer-Moore算法,应该可以轻松地进行不区分大小写的搜索,以及不区分大小写的搜索和替换,没有任何临时字符串(使用StrUpper等),并且不调用比Boyer更慢的Pos()需要在重复搜索同一文本时进行摩尔搜索.
(编辑:我有一个部分解决方案,写作这个问题的答案,几乎100%完成,它甚至有一个快速的字符串替换功能.我相信它必须有bug,特别是认为,因为它假装是Unicode由于未实现的Unicode承诺,它必须存在故障.)
(编辑2:有趣和意外的结果;堆栈上的unicode代码点表的大堆栈大小 - 下面的代码中的SkipTable严重阻碍了你可以在unicode字符串boyer中完成的双赢优化量 - 摩尔字符串搜索.感谢Florent Ouchet指出我应该立即注意到的内容.)
而
"a".replaceAll("a", "b")
"a".replaceAll("a+", "b")
"a".replaceAll("a+?", "b")
Run Code Online (Sandbox Code Playgroud)
所有回报b,为什么呢
"a".replaceAll("a*", "b")
Run Code Online (Sandbox Code Playgroud)
回归bb和
"a".replaceAll("a*?", "b")
Run Code Online (Sandbox Code Playgroud)
回来bab?
replace ×10
regex ×6
string ×3
algorithm ×1
android ×1
backslash ×1
boyer-moore ×1
c# ×1
delphi ×1
delphi-2010 ×1
excel ×1
file ×1
file-io ×1
fragment ×1
java ×1
javascript ×1
nano ×1
php ×1
phpstorm ×1
powershell ×1
preg-replace ×1
webstorm ×1