如何从可能会被可选逗号分隔的字符串中提取数据?

路易斯·卡雷特罗·弗雷斯诺

我已经收到了类似的字符串"Street number 1, Barcelona",或者,如果没有街道数据,"Barcelona"我只是想通过单个正则表达式来表达模式并捕获城市数据。

我已经想出了一种模式,该模式可以选择不包含逗号的字符串中的所有内容...

^([^,]+)$

我也有一个正则表达式,用于在第一个逗号后捕获所有内容...

^.+?, (.*)$

是否可以将它们都合并为一个正则表达式和/或如何对其进行管理?

彼得·塞利格

只是测试

如果OP的用例只是测试,遵循regex可能会有所帮助/^[^,]*,*[^,]+$/读取如下...

  • /^ ... $/ 在开始和结束之间...
  • [^,]*可选地匹配不是逗号的任何内容...
  • ,*也许后面跟一个可选的逗号...
  • [^,]+紧跟着(或仅代表自己)至少一个不是逗号的字符

const regXOptionallySplittingComma = (/^[^,]*,*[^,]+$/);

console.log(
  'test ... "" ?',
  regXOptionallySplittingComma.test("")
);
console.log(
  'test ... "," ?',
  regXOptionallySplittingComma.test(",")
);
console.log(
  'test ... " ," ?',
  regXOptionallySplittingComma.test(" ,")
);
console.log('\n');

console.log(
  'test ... " , " ?',
  regXOptionallySplittingComma.test(" , ")
);
console.log(
  'test ... ",  " ?',
  regXOptionallySplittingComma.test(",  ")
);
console.log(
  'test ... "   " ?',
  regXOptionallySplittingComma.test("   ")
);
console.log('\n');

console.log(
  'test ... "  Barcelona  " ?',
  regXOptionallySplittingComma.test("  Barcelona  ")
);
console.log(
  'test ... "Lloret de Mar" ?',
  regXOptionallySplittingComma.test("Lloret de Mar")
);
console.log('\n');

console.log(
  'test ... ",  Barcelona  " ?',
  regXOptionallySplittingComma.test(",  Barcelona  ")
);
console.log(
  'test ... ",  Lloret de Mar  " ?',
  regXOptionallySplittingComma.test(",  Lloret de Mar  ")
);
console.log('\n');

console.log(
  'test ... "Street number 1, Barcelona" ?',
  regXOptionallySplittingComma.test("Street number 1,  Barcelona")
);
console.log(
  'test ... "Street number 1, Lloret de Mar" ?',
  regXOptionallySplittingComma.test("Street number 1,  Lloret de Mar")
);
console.log('\n');

console.log(
  'test ... "Street, number 1, Barcelona" ?',
  regXOptionallySplittingComma.test("Street, number 1,  Barcelona")
);
console.log(
  'test ... "Street number 1, Lloret de, Mar" ?',
  regXOptionallySplittingComma.test("Street number 1,  Lloret de, Mar")
);
.as-console-wrapper { min-height: 100%!important; top: 0; }

提取数据

如果OP的用例正在提取数据,例如获取字符串的右侧(可以用可选的逗号分隔),则可能的解决方案不一定需要基于正则表达式...

function extractTrailingNonCommaChars(str) {
  const list = String(str).split(',');

  // - without testing for a maximum two partials split
  // - take always the last or most right handed partial ...
  // return list[list.length - 1].trim();

  // - with testing for a maximum two partials split ...
  const count = list.length;
  return (count <= 2) && list[count - 1].trim() || '';
}

console.log(
  '"Street number 1,  Barcelona  " =>',
  `"${ extractTrailingNonCommaChars("Street number 1,  Barcelona  ") }"`
);
console.log(
  '",  Lloret de Mar  " =>',
  `"${ extractTrailingNonCommaChars(",  Lloret de Mar  ") }"`
);
console.log(
  '" Barcelona" =>',
  `"${ extractTrailingNonCommaChars(" Barcelona") }"`
);
console.log(
  '"Lloret, de Mar" =>',
  `"${ extractTrailingNonCommaChars("Lloret, de Mar") }"`
);

console.log(
  '",,," =>',
  `"${ extractTrailingNonCommaChars(",,,") }"`
);
console.log(
  '",  " =>',
  `"${ extractTrailingNonCommaChars(",  ") }"`
);
console.log(
  '" , " =>',
  `"${ extractTrailingNonCommaChars(" , ") }"`
);
console.log(
  '"   " =>',
  `"${ extractTrailingNonCommaChars("   ") }"`
);
console.log(
  '"," =>',
  `"${ extractTrailingNonCommaChars(",") }"`
);
console.log(
  '"" =>',
  `"${ extractTrailingNonCommaChars("") }"`
);
console.log(
  '"Street, number 1,  Barcelona  " =>',
  `"${ extractTrailingNonCommaChars("Street, number 1,  Barcelona  ") }"`
);
console.log(
  '",  Lloret de, Mar  " =>',
  `"${ extractTrailingNonCommaChars(",  Lloret de, Mar  ") }"`
);
.as-console-wrapper { min-height: 100%!important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何分割逗号分隔的字符串?

如何从python的字符串中提取包含逗号的数字

如何查询逗号分隔的字符串?

如何用逗号分隔字符串?

通过PowerShell从JSON数组中提取特定对象作为逗号分隔的字符串

gsub从字符串regex可选逗号中提取特定数字

从具有逗号分隔值的列中提取多个字符串

从空格(逗号)分隔的字符串中提取单词

如何从字符串中提取逗号分隔的子字符串?

如何从可能会/可能不会以单引号开头的字符串中提取单词

使用正则表达式从逗号分隔的字符串中提取值

如何使用sed从逗号分隔的字符串中提取数字?

从C中的txt文件中提取逗号分隔的字符串

在Excel中提取特定字符之间的字符串,并用逗号分隔

从两个用逗号分隔的字符串中提取公用字符串

使用LIKE从逗号分隔的字符串中提取ID

RegEx-从逗号分隔的字符串中提取包含子字符串的单词

提取逗号分隔的字符串

如何从逗号分隔的字符串中提取前两个值

如何在python中提取部分字符串(字符串长度可能会有所不同)

从逗号分隔的字符串中提取单词到单独的行

C - 从文件中提取逗号分隔的字符串到数组中 - 分段错误

C++中如何从字符串中提取数据

Amazon QuickSight 使用计算字段从逗号分隔的未排序字符串中提取字符串

Athena-从字符串中提取子字符串-逗号分隔

从 Python 中的分隔字符串中提取数据

如何从 txt 文件中提取带有逗号分隔符的字符串,并将逗号分隔符分隔的每个元素解析为类构造函数

如何从 txt 文件中提取带有逗号分隔符的字符串,并将逗号分隔符分隔的每个元素解析为类构造函数

从单元格中以逗号分隔的日期字符串中提取最小(最旧)日期