需要使用正则表达式替换/删除记事本++中的多次出现。下面是一个例子:
....
something<item>text to be removed or replaced</item>
text<item>another text to be
removed or replaced</item>
<item>more text to be removed or
replaced</item>
...
Run Code Online (Sandbox Code Playgroud)
我需要替换/删除"<item>"和之间的所有内容"</item>",匹配可能包括一个新行。
所以我最终会得到这样的结果:
....
something<item></item>
text<item></item>
<item></item>
...
Run Code Online (Sandbox Code Playgroud) 全部 - 需要一个匹配包含重复多次字符的整个单词的正则表达式.例如,给出句子"这里有一些测试词",我想在"areee"和"testtting"上匹配.
像"([az])\ 1 {1,}"这样的模式匹配重复的字符,但它返回"eee"和"ttt",而不是包含重复字符的整个单词.我用"\ w"代表单词和"\ b"代表单词边框进行了多种变体实验,但似乎无法使其正常工作......谢谢!
我有这样的表达:
^(?!0*(\.0+)?$)(\d+|\d*\.\d+)$
Run Code Online (Sandbox Code Playgroud)
它工作正常,只是我希望它也接受逗号作为分隔符。有了这个图案,1,5还是,123假的。应该是真的。
具体来说,
0 = false
0.0 = false
null = false
. = false
, = false
0.123 = true
0,123 = true
.123 = true
,123 = true
123.123 = true
123,123 = true
Run Code Online (Sandbox Code Playgroud) 我尝试读取街道地址并用正则表达式分割街道和号码。
该地址可以如下所示:
Ebory Mebory Street 1
Eborymebory Street 23/2
Filler Filler Filler Street 1-32
Run Code Online (Sandbox Code Playgroud)
我尝试拆分字符串使用split(),然后再次将街道名称放在一起(如果在拆分字符串中没有检测到数字)。
这仅适用于第一种情况。我认为如果我使用正则表达式会更好。问题是我对正则表达式的理解非常有限。
adress = "Ebory mebory Street 23".split()
street = ""
number = ""
for item in adress:
if(not(item.isdigit())):
street = street + item + " "
else:
number = item
Run Code Online (Sandbox Code Playgroud)
我得到的结果是正确的,但仅限于这种情况。如果地址是Eborymebory Street 23/24,则由于斜杠而无法工作。
那么,问题是如何获取街道地址以及字符串末尾的数字,并记住这些数字可能是可选的?
我有一个看起来像这样的字符串......
mystring = '{#var#}status has been updated{#var#}with remark{#var#}connect with{#var#}at{#var#}transactions may be{#var#}till{#var#}'
Run Code Online (Sandbox Code Playgroud)
我只需要给它编号,让它看起来像这样......
{#var1#}status has been updated{#var2#}with remark{#var3#}connect with{#var4#}at{#var5#}transactions may be{#var6#}till{#var7#}
Run Code Online (Sandbox Code Playgroud)
这将用数字 1 替换字符串
mystring.replace("{#var#}", "{#var1#}")
Run Code Online (Sandbox Code Playgroud)
不知道如何枚举数字 2,3,4 到 7
我很好奇 Perl 正则表达式反向引用和其他人的(C++、grep、emacs,实际上我见过的所有其他用法)之间的语法差异的历史原因。
Perl\g1用于组反向引用。其他人都使用看起来更简洁的语法,只是\1.
我正在尝试删除文本,直到包含一个或多个逗号的字符串中的第一个逗号为止。出于某种原因,我发现这总是删除所有字符串的最后一个逗号之前的所有内容。
字符串看起来像:
OCR - (some text), Variant - (some text), Bad Subtype - (some text)
Run Code Online (Sandbox Code Playgroud)
我的正则表达式正在返回:
Bad Subtype - (some text)
Run Code Online (Sandbox Code Playgroud)
当所需的输出是:
Variant - (some text), Bad Subtype - (some text)
Run Code Online (Sandbox Code Playgroud)
Variant 不能保证排在第二位。
#select all strings beginning with OCR in the column Tags
clean<- subset(all, grepl("^OCR", all$Tags)
#trim the OCR text up to the first comma, and store in a new column called Tag
clean$Tag<- gsub(".*,", "", clean$Tag)
Run Code Online (Sandbox Code Playgroud)
或者
clean$Tag <- gsub(".*\\,", "", clean$Tag)
Run Code Online (Sandbox Code Playgroud)
或者
clean$Tag<- sub(".*,", "", clean$Tag)
Run Code Online (Sandbox Code Playgroud)
等等..
我有这个向量
names <- c("wazzzap12waaazzzaaaaapffffm12323", "hell223231", "musssaaaa225")
Run Code Online (Sandbox Code Playgroud)
所以我想删除向量元素中至少包含三个“z”字母的数字的单词。
我有一个 .bed (.tsv) 文件,如下所示:
chr1 0 100000
chr1 100000 200000
chr1 200000 300000
chr1 300000 425234
Run Code Online (Sandbox Code Playgroud)
我想使用 sed 或 awk 仅对第 3 列中以“000”结尾的值执行操作 -1,以便输出如下所示:
chr1 0 99999
chr1 100000 199999
chr1 200000 299999
chr1 300000 425234
Run Code Online (Sandbox Code Playgroud)
令人尴尬的是,我想出的最好的办法是:
awk {sub(/000$/,"999",$3); print $1,$2,$3}' oldfile > newfile
Run Code Online (Sandbox Code Playgroud)
它只是用最后 3 位数字代替 999,而不是实际相减。任何帮助总是值得赞赏!
我有一个大型 data.table,包含超过 700 万行和 38 列。其中一列是字符向量,其中包含很长的描述性句子。我知道每个句子的第一个单词是一个类别,第二个单词是一个名称,我需要将这两个单词放入两个新列中以供以后分析。
这可能不能很好地说明时间差异,因为它太小了(实际上system.time()在这个例子中给出了 0),但这里有一个玩具字符串来说明我想要做的事情:
# Load libraries:
library(data.table)
library(stringr)
# Create example character string:
x <- c("spicy apple cream", "mild peach melba", "juicy strawberry tart")
id <- c(1,2,3)
# Create dt:
mydt <- data.table(id = id, desert = x)
Run Code Online (Sandbox Code Playgroud)
假设在我的真实数据中,我想从每个字符串中提取第一个单词,并将其放入一个名为“category”的新变量中,然后从每个字符串中提取第二个单词并将其放入一个名为“fruit_name”的新变量中。
词法上最简单的方法似乎是使用stringr::word()which 很有吸引力,因为它避免了计算复杂的正则表达式的需要:
# Add a new category column:
mydt[, category := stringr::word(desert, 1)]
# Add a new fruit name column:
mydt[, fruit_name := stringr::word(desert, 2)]
Run Code Online (Sandbox Code Playgroud)
虽然这在小数据集上工作得很好,但在我的真实数据集上却花了很长时间(我怀疑它挂起了,尽管我杀死了它并在 10 分钟后重新启动了 R)。就上下文而言,该数据集中的其他字符向量类型操作大约需要 20 秒才能运行,因此该函数似乎特别耗费人力和计算资源。
相反,如果我使用正则表达式, …
regex ×7
r ×4
awk ×1
data.table ×1
notepad++ ×1
performance ×1
perl ×1
python ×1
python-3.x ×1
replace ×1
sed ×1
string ×1
stringr ×1