我有一个很长的字符串,我想删除大写的连续单词(连续 2 个以上),如果最后一个大写单词后面有标点符号,那也是。但与此同时,我想保留作为“混合”词一部分的单个大写单词和大写单词(参见 reprex)。
我很难在 reprex 中实现连续词组。
string <- "Lorem ipsum DOLOR SIT AMET? consectetuer adipiscing elit. Morbi gravida libero NEC velit. Morbi scelerisque luctus velit. ETIAM-123 dui sem, fermentum vitae, SAGITTIS ID? malesuada in, quam. Proin mattis lacinia justo. Vestibulum facilisis auctor urna. Aliquam IN LOREM SIT amet leo accumsan"
#remove all consecutive UPPERCASE words including punctation (--> DOLOR SIT AMET?), but not single uppercase words (--> NEC) or "mixed" words with uppercase and digits (--> ETIAM-123)
#this doesn't …Run Code Online (Sandbox Code Playgroud) 我一直在尝试从字符串中获取所有值,并按以下方式将它们放入映射中:
所以我有一个像这样的字符串:
String cookies = "i=lol;haha=noice;df3=ddtb;"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一直在尝试这个:
final Map<String, String> map = new HashMap<>();
map.put(cookies.split(";")[0].split("=")[0], cookies.split(";")[0].split("=")[1]);
Run Code Online (Sandbox Code Playgroud)
但是这样我只能输入一个值,而且它很长很丑。有没有用正则表达式或循环来解决这个问题?
我正在尝试初始化一个包含多个表达式结果的 hashref。我希望返回未定义结果的表达式将 undef 分配给适当的键。相反,赋值只是吞噬了下一个键,就好像表达式从不存在一样。
一个简单的例子可能更容易理解:
use Data::Dumper;
my $str = "vs";
my $contains = {
t => ($str =~ /t/i),
u => ($str =~ /u/i),
v => ($str =~ /v/i),
};
print(Data::Dumper->Dump([$contains]));
Run Code Online (Sandbox Code Playgroud)
我希望上面的代码打印:
$VAR1 = {
'v' => 1,
't' => undef,
'u' => undef
};
Run Code Online (Sandbox Code Playgroud)
相反,我得到以下信息:
$VAR1 = {
't' => 'u',
'v' => 1
};
Run Code Online (Sandbox Code Playgroud)
在赋值中添加一个明确的 undef 确实让我得到了我正在寻找的结果:
$VAR1 = {
'v' => 1,
't' => undef,
'u' => undef
};
Run Code Online (Sandbox Code Playgroud)
然而,这对我来说似乎有点违反直觉。有人可以解释这种行为吗?
我想捕获 MediaWiki 格式的图像标签,例如,
[[图片:Justus Sustermans - Galileo Galilei (Uffizi) 的肖像).jpg|left|thumb|upright|[[Galileo]] 通常被称为 [[现代天文学]] 之父,肖像由 [[Justus Sustermans] ] ]]
我必须忽略内部[[...]]以匹配整体(以粗体[[和 显示]])。我想出了
\[\[Image:((?:[^]]*+(?:(?!\[\[)|(?R))*+)*+)\]\]
Run Code Online (Sandbox Code Playgroud)
但它停在第一个]]。
使用正则表达式,我想匹配以下字符串:
4232,2232
Run Code Online (Sandbox Code Playgroud)
我试过了
^[0-9]+(,[0-9]+)$
Run Code Online (Sandbox Code Playgroud)
但是,它没有按预期工作.我想要迎合4个数字,一个逗号和4个数字.
全部 - 需要一个匹配包含重复多次字符的整个单词的正则表达式.例如,给出句子"这里有一些测试词",我想在"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) 我正在尝试删除文本,直到包含一个或多个逗号的字符串中的第一个逗号为止。出于某种原因,我发现这总是删除所有字符串的最后一个逗号之前的所有内容。
字符串看起来像:
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)
等等..
我正在尝试编写正则表达式来分割以主题标签开头的所有单词。
例如,在以下文本中应该:
val regex = "???".r
val text = "#shouldMatch1 #shouldMatch2 notMatch nope#shouldMatch3 nooope()#shouldMatch4"
regex.split(text).toList shouldBe List("#shouldMatch1", "#shouldMatch2", "#shouldMatch3", "#shouldMatch4")
Run Code Online (Sandbox Code Playgroud)
我能得到的关闭是val regex: Regex = "[^#\\w+]".r,但它的分裂更多一点:
List("#shouldMatch1", "#shouldMatch2", "notMatch", "nope#shouldMatch3", "nooope", "#shouldMatch4")
Run Code Online (Sandbox Code Playgroud)
因此,在某些情况下,它会找到不以主题标签开头的单词。您对我应该如何写出正确的表达有任何想法或指导吗?
代码是用 Scala 编写的,但用 Java 编写应该类似。