小编Wik*_*żew的帖子

正则表达式在 Notepad ++ 中查找/替换包括新行

需要使用正则表达式替换/删除记事本++中的多次出现。下面是一个例子:

....
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)

regex notepad++

0
推荐指数
1
解决办法
1093
查看次数

正则表达式匹配包含重复字符的整个单词

全部 - 需要一个匹配包含重复多次字符的整个单词的正则表达式.例如,给出句子"这里有一些测试词",我想在"areee"和"testtting"上匹配.

像"([az])\ 1 {1,}"这样的模式匹配重复的字符,但它返回"eee"和"ttt",而不是包含重复字符的整个单词.我用"\ w"代表单词和"\ b"代表单词边框进行了多种变体实验,但似乎无法使其正常工作......谢谢!

regex r

0
推荐指数
1
解决办法
3122
查看次数

正则表达式允许点和逗号

我有这样的表达:

^(?!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)

regex

0
推荐指数
1
解决办法
1万
查看次数

用于分割街道地址的正则表达式,该地址可能具有末尾带有斜线或连字符的可选数字

我尝试读取街道地址并用正则表达式分割街道和号码。

该地址可以如下所示:

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,则由于斜杠而无法工作。

那么,问题是如何获取街道地址以及字符串末尾的数字,并记住这些数字可能是可选的?

regex python-3.x

0
推荐指数
1
解决办法
4683
查看次数

正则表达式中的枚举

我有一个看起来像这样的字符串......

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

python string replace

0
推荐指数
1
解决办法
123
查看次数

为什么 perl 使用 \g1 作为反向引用而其他人使用 \1?

我很好奇 Perl 正则表达式反向引用和其他人的(C++、grep、emacs,实际上我见过的所有其他用法)之间的语法差异的历史原因。

Perl\g1用于组反向引用。其他人都使用看起来更简洁的语法,只是\1.

regex perl

0
推荐指数
1
解决办法
163
查看次数

如何在R中第一次出现逗号之前删除所有内容

我正在尝试删除文本,直到包含一个或多个逗号的字符串中的第一个逗号为止。出于某种原因,我发现这总是删除所有字符串的最后一个逗号之前的所有内容。

字符串看起来像:

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)

等等..

regex r

0
推荐指数
2
解决办法
107
查看次数

我想使用正则表达式删除字符向量中具有精确模式的单词,但不知道如何

我有这个向量

names <- c("wazzzap12waaazzzaaaaapffffm12323", "hell223231", "musssaaaa225")
Run Code Online (Sandbox Code Playgroud)

所以我想删除向量元素中至少包含三个“z”字母的数字的单词。

regex r

0
推荐指数
1
解决办法
232
查看次数

减去以特定数字结尾的值?

我有一个 .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,而不是实际相减。任何帮助总是值得赞赏!

awk sed

0
推荐指数
1
解决办法
49
查看次数

r Large data.table 为什么使用正则表达式提取单词比 stringr::word 更快?

我有一个大型 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 秒才能运行,因此该函数似乎特别耗费人力和计算资源。

相反,如果我使用正则表达式, …

performance r stringr data.table

0
推荐指数
1
解决办法
299
查看次数

标签 统计

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