如何提取简单字符串中第30个字符之后的所有字符。

时间:2018-12-20 18:34:51

标签: regex

我有一个文本字段,该字符串返回从38到40长的字符串。我只需要提取第30个字符到结尾。

我用。{9} $抓取了最后9个字符,然后意识到原始字符串不是一定数量的字符,只需要前29个字符即可。之后的所有内容都是案件编号,这是我需要的。同样,所需的字符数可以是9到12个长

4 个答案:

答案 0 :(得分:0)

您可以使用子字符串功能

[YourString].substring(29)

答案 1 :(得分:0)

使用Python时,只需执行以下操作:

string[30:]

这将自动将第30个字符返回末尾。

答案 2 :(得分:0)

^.{30}\K.*$
  

^ 在字符串开头声明位置

     

。{30} 量词-精确匹配30次

     

\ K 重置报告的比赛的起点。所有以前消耗的字符将不再包含在最终比赛中

     

。* 匹配任何字符(行终止符除外)

     

$ 在字符串末尾或在字符串末尾的行终止符之前(如果有)断言位置

答案 3 :(得分:0)

跳过前29个并提取其余

以下是字符串方法.slice().substring().replace()。正则表达式将跳过前29个字符和空格,然后提取其余字符:

(?:[\s\S]{29})([\s\S]*?)
  • 开始匹配未捕获的(?: ...
  • 任何空格或非空格字符:[\s\S]
  • 二十九次:{29}
  • 结束匹配的非捕获:.. )
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 接下来,开始匹配捕获:( ...
  • 任何空格或非空格字符:[\s\S]
  • 零次或多次:*
  • 懒散地:?
  • 结束匹配捕获:... )

演示

var str = '123456789㉈123456789㉉123456789㉊123456789㉋';

var rgx = /(?:[\s\S]{29})([\s\S]*?)/;

console.log('var str = ' + str);

console.log('--------------------------------------------------');

console.log('str.slice(29) // ' + str.slice(29));

console.log('--------------------------------------------------');

console.log('str.substring(29) // ' + str.substring(29));

console.log('--------------------------------------------------');

console.log(`var rgx = ${rgx}`);

console.log('str.replace(rgx, "$1") // ' + str.replace(rgx, '$1'));
.as-console-wrapper {
  min-height: 100%;
}

.as-console-row-code.as-console-row-code {
  font-size: 18px;
}

.as-console-row.as-console-row::after {
  display: none;
}