我发现这个正则表达式代码(在 R 中)可以识别以下模式“类”:一组字符串中的“LETTER-NUMBER-LETTER NUMBER-LETTER-NUMBER”:
apply(my_string, 1, function(x) gsub('(([A-Z] ?[0-9]){3})|.', '\\1', toString(x)))
Run Code Online (Sandbox Code Playgroud)
根据上面的代码,“LETTER-NUMBER-LETTER NUMBER-LETTER-NUMBER”对应的正则表达式“类”似乎是“(([AZ] ?[0-9]){3})|”。
这引出了我的问题:
假设我在 R 中有以下输入:
input = "A1B 2C3"
Run Code Online (Sandbox Code Playgroud)
有什么方法可以确定该字符串中包含什么正则表达式“类”?例如,是否存在这样的功能?
output = some_function("A1B 2C3")
> output
'(([A-Z] ?[0-9]){3})|.'
Run Code Online (Sandbox Code Playgroud)
我发现这个网站(https://regex-generator.olafneumann.org/?sampleText=the%20follow%20abc&flags=i&selection=11%7CMultiple%20characters)似乎执行类似的任务 - 但有没有办法做到这一点在 R 中?例如(我不确定这是否正确):
string = c("s0me strIngz123", "someString3s", "S0M3 5t1ngs")
#imaginary conversion function
regex_class = some_function(string)
# output
string regex_class
1 s0me strIngz123 ^[A-Za-z0-9]+.*[a-zA-Z]+123$
2 someString3s ^[A-Za-z0-9]+$
3 S0M3 5t1ngs ^[A-Za-z0-9]+ [A-Za-z0-9]+$
Run Code Online (Sandbox Code Playgroud)
R 中有某种方法可以确定不同字符串的通用“正则表达式类”吗?
谢谢你!
我认为不可能制定一个通用的模式,我将尝试解释原因。
一旦 R 中几乎没有标量,我将使用 Pascal 中的数据类型术语:
intToUtf8(strtoi("0x000A"))。"ABC"or "ABC"[1]。character在 R 中)。例如c("ABC", "DEF")。我们可以从 char(字符)级别到字符串数组构建我们的解释,反之亦然。
第一的。广义的算法对于char(字符)是不可能的。原因很简单。假设我们有一个 char A。广义模式可以是
A仅有的,A或者a,A或B或其他允许字符的有限向量(例如,来自我之前的示例:十六进制拼写中使用的字母,"A":"F"带或不带"a":"f"),您会发现单个字符没有提供任何足够的信息来预测 的广义模式regex。
第二。对于单个字符串来说,广义算法是不可能的。
NA或允许的值。相反的结论也是合法的。例如,对于单个字符串,我们不能声明所有字符串都必须为空。""!is.na()== ""因此,对单个样本字符串的分析不能唯一地限制字符的位置、字符串的长度和字符组。
第三。字符串数组也不足以构建regex.
null/0 长度。实际上,字符串数组的限制与字符串的限制有很多共同点。
结论。
基于这些考虑,我们可以得出以下结论。
n regex根据所分析字符串的特定质量来构建 'es。n是无限的(只要我们假设允许无限长度的字符串)或者至少(非常)大。n并构建更合适的regexes。但人工智能的所有结果在统计上都是有限的,并且可能具有永远达不到的更高或更低的显着性1。所以这些方法会给我们m regexes. 虽然m <= n还是m != 1。m < n即使像某些regexes 形式那样值得怀疑的考虑m也不太可能,但仍然是可能的。| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |