字符串的正则表达式公式,用于提取两种值之一

Regex formula for string to extract one of two kinds of values

提问人:JuliB 提问时间:10/16/2023 最后编辑:Romeo NinovJuliB 更新时间:10/17/2023 访问量:69

问:

我的值穿插了单个值和串联值。我需要创建一个正则表达式来计算值并返回没有“|”的整数或由“|”字符分隔的一组数字中的第一个。

现有值

12345667D23
3t23456
ab57890
3t23456|ab57890
12345667D23|3t23456|ab57890

转换后的值(返回相同的单个值或字符串的第一个值,直到“|”)

12345667D23
3t23456
ab57890
3t23456
12345667D23

我是正则表达式的新手。我在这里没有足够的经验......我不是要匹配字符串,只是返回值(可以是数字,也可以是字母数字,没有设置的字符串长度,只是用管道分隔)

正则表达式 字符串 Adobe 分隔符

评论

0赞 sln 10/17/2023
您可以用空白 regex101.com/r/8sax7c/1 替换所有内容。或者根据匹配项创建一个新字符串 regex101.com/r/24opi6/1 哪个听起来不错?\|.*(?m)^[^|\r\n]*
0赞 sln 10/20/2023
仅供参考。我看到你的声明,你是正则表达式的新手。我不建议你这么说,因为有些人会坚持硬答案,这些答案将向你展示完整的答案、复杂性和所有。最好咬紧牙关,忍受严厉,然后在黑暗中。您在下面关于空格或修剪空格或因空格而取消元素资格的评论可能会导致多种解决方案。我建议你在第一次创建问题时用所有血腥的细节来陈述你的问题。或者随着发现的发现而快速修改问题。

答:

-1赞 GolferDude 10/17/2023 #1

试试这个:

^[^\|]+

在这里,匹配一行的开头,匹配一系列不是竖线 () 的字符。因此,整个表达式匹配从行首到行尾的字符序列。^[^\|]+||

评论

0赞 JuliB 10/18/2023
非常感谢!这在一个文件上效果很好,但在另一个文件上,“|”之前显然有一个额外的空格...有没有一种优雅的方法来消除这个空间?
0赞 JuliB 10/18/2023
我想我想通了......首先,我使用 ^[^\s]+ 作为第一条规则来对包含空格的值进行分类,然后使用您的原始答案作为第二条规则来对不包含空格的值进行分类......它似乎正在工作。
0赞 GolferDude 10/20/2023
如果我正确理解您的格式,您也可以尝试 . 允许单个空间存在/不存在(匹配零个或一个实例)^[^\s?\|]+\s?