我在发布之前查看了相关问题,但我无法修改任何相关的答案以使用我的方法(不擅长正则表达式).
基本上,这是我现有的行:
$code = preg_replace_callback( '/"(.*?)"/', array( &$this, '_getPHPString' ), $code );
$code = preg_replace_callback( "#'(.*?)'#", array( &$this, '_getPHPString' ), $code );
Run Code Online (Sandbox Code Playgroud)
它们都匹配''和之间包含的字符串"".我需要正则表达式来忽略它们之间包含的转义引号.所以之间的数据''会忽略,\'而之间的数据""会被忽略\".
任何帮助将不胜感激.
问题:我有成千上万的文档,其中包含我不想要的特定字符.比如角色a.这些文档包含各种字符,但a我要替换的是双引号或单引号.
我想找到并替换它们,我认为需要使用正则表达式.我正在使用VSCode,但我对任何建议持开放态度.
我的尝试:我能够找到以下正则表达式匹配包含其中的值的特定字符串().
".*?(r).*?"
Run Code Online (Sandbox Code Playgroud)
但是,这仅突出显示整个报价.我想只突出这个角色.
任何解决方案,可能在正则表达式之外,都是受欢迎的.
示例结果:给定,字符是a,find替换为b
Somebody once told me "apples" are good for you => Somebody once told me "bpples" are good for you
"Aardvarks" make good kebabs => "Abrdvbrks" make good kebabs
The boy said "aaah!" when his mom told him he was eating aardvark => The boy said "bbbh!" when his mom told him he was eating aardvark
谢谢你的期待,
我有一段非常糟糕的时间试图为这个正则表达式问题找到正确的搜索条件.我需要确保引号已经在字符串中转义,否则匹配应该失败.(这类问题的大多数搜索结果只是说你需要逃避引号或如何逃避引号.)
有效:
This is valid
This \"is Valid
This is al\"so Valid\"
Run Code Online (Sandbox Code Playgroud)
无效:
This i"s invalid
This i"s inv"alid
Run Code Online (Sandbox Code Playgroud)
到目前为止,我唯一能找到的是
((?:\\"|[^"])*)
Run Code Online (Sandbox Code Playgroud)
这似乎与以下的第一部分匹配,但在转义引用后没有任何内容
This is a \"test
Run Code Online (Sandbox Code Playgroud)
再次,这应该失败:
This is a \"test of " the emergency broadcast system
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助,我希望这是可能的.
我想匹配以下字符串:
The sentence is 'He said "Hello there"'
The sentence is "He said 'Hello there'"
Run Code Online (Sandbox Code Playgroud)
并获取单个捕获(匹配),即外部单引号或双引号内的句子.
^The sentence is (?:(?:'([^']*)')|(?:"([^"]*)"))$
Run Code Online (Sandbox Code Playgroud)
上面的正则表达式给了我2个被捕获的组,其中一个是空的,另一个包含所需的句子.
^The sentence is (['"])(.*)\1$
Run Code Online (Sandbox Code Playgroud)
返回引号(单引号或双引号)作为第1组,将句子作为第2组.
如果我让第一组不捕获,
^The sentence is (?:['"])(.*)\1$
Run Code Online (Sandbox Code Playgroud)
然后我不能使用后来对被捕获组的引用.(\ 1当然不再是指单引号或双引号匹配)
有没有办法让那些"捕获"的组可以在后面的正则表达式中引用,但其捕获的值不会在匹配列表中返回?
或者其他一些方法来解决我(看似简单)的问题.
如何获得以下两个文本中引号之间的内容?
text_1 = r""" "Some text on \"two\" lines with a backslash escaped\\" \
+ "Another text on \"three\" lines" """
text_2 = r""" "Some text on \"two\" lines with a backslash escaped\\" + "Another text on \"three\" lines" """
Run Code Online (Sandbox Code Playgroud)
对我来说问题是,如果它们被转义,应该忽略引号,但是有可能使反斜杠转义.
我想获得以下小组.
[
r'Some text on \"two\" lines with a backslash escaped\\',
r'Another text on \"three\" lines'
]
Run Code Online (Sandbox Code Playgroud) 我试图匹配以某个字符串开头的整个字符串,然后匹配任意数量的字符::,除非::匹配,否则仅接受 if 后跟该字符串CASE。
例如:以 开头,后跟Linus::0 个或多个 1 字符的字符串,除非 if ::thenCASE必须跟在 else 后面,仅匹配 之前的所有内容::。
Linus::AOPKNS::CASE将捕获整个字符串
Linus::AOPKNS将捕获整个字符串
Linus::AOPKNS::OK只会捕获Linus::AOPKNS
我想我必须使用积极的前瞻,但考虑到我想匹配 之前的任意数量的字符,我不太确定该怎么做::。
每次我写 " 我的编译器都假设我正在尝试写一个字符串。相反,我希望我的方法告诉我传入的字符串是否以双引号 "" 开头,例如:
String n;
if(n==n.startsWith(" " " ));
Run Code Online (Sandbox Code Playgroud)
不起作用
有什么建议??
给定以下键值对,我如何仅匹配值(包括引号)?
说明:我正在IDE中进行查找和替换。我有数百个键/值对,其中的值需要从字符串更改为对象。因此基本上取代了价值。
"ElevationFilenameIn": "Input raster elevation file",
"TargetCRS": "Target vertical coordinate reference system Type",
"featureName": "The name of the feature to extract, for example \"Vegetation\" or \"Water\"",
"TargetCRScode": "Target vertical coordinate system Code",
"TargetCRSfile": "The projection (.prj) file in shoebox to be used for this inputfile"
Run Code Online (Sandbox Code Playgroud)
我的尝试(不起作用,甚至没有结束):
[:]\s*(\"\w*\")
Run Code Online (Sandbox Code Playgroud) 我的代码
use strict;
use warnings;
my $filename = '263.xml';
open(my $fh, $filename)
perl -p -i -e '$fh if /<caldata chopper="on"/ "(\d+)"/; print $fh;'
Run Code Online (Sandbox Code Playgroud)
但
Warning: Use of "-p" without parentheses is ambiguous at a1.pl line 7.
syntax error at a1.pl line 7, near ")
perl "
Execution of a1.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)
我想分开线
caldata chopper="on"
Run Code Online (Sandbox Code Playgroud)
和caldata chopper ="off"到单独的文件中.这就是整条线
<caldata chopper="on" gain_1="0" gain_2="0" gain_3="0" impedance="(0,0)">
Run Code Online (Sandbox Code Playgroud)