我想在括号之间锁定一个字符串,我想知道什么是最好的方法
我是什么意思
我在文件中有一些行
let largestString;
function findLargestString(strings) {
let largestString = '';
strings.forEach((string) => {
if (string.length > largestString.length) {
largestString = string;
}
});
return largestString;
}
var arr = new Array('', 'aa', 'test')
console.log(findLargestString(arr));
我需要锁定[307b..3fff] : 00000000000000000;
,307b
和3fff
我尝试使用regexp锁定它,找到括号并将字符串锁定在
中00000000000000000
如何锁定括号中的值307b..3fff?
伊塔马尔
答案 0 :(得分:4)
虽然有使用正则表达式的解决方案,但它们不是解析该字符串的唯一方法。 scan
命令也很有用...特别是你将值作为数字而不是以十六进制数字字符串本身。
set inputString {[307b..3fff] : 00000000000000000;}
scan $inputString {[%x..%x] : %lx;} v1 v2 v3
puts "$v1->$v2 => $v3"
# Output: 12411->16383 => 0
答案 1 :(得分:1)
我会选择Donal的回答,但是
set inputString {[307b..3fff] : 00000000000000000;}
lassign [regexp -inline -all {[[:xdigit:]]+} $inputString] v1 v2 v3
也有效(fwiw,它也保留十六进制)。
答案 2 :(得分:0)
答案 3 :(得分:0)
使用以下解决方案,num1
,num2
和num3
将保留您需要的值:
set line {[307b..3fff] : 00000000000000000;}
regexp {\[([^][]*)\.\.([^][]*)]\s*:\s*(\d+)} $line - num1 num2 num3
puts "Number1: $num1\nNumber2: $num2\nNumber3: $num3"
正则表达式匹配:
\[
- [
([^][]*)
- 第1组(" num1"):除]
和[
以外的任何0 +字符\.\.
- 两个点([^][]*)
- 第2组(" num2"):除]
和[
以外的任何0 +字符]
- ]
\s*:\s*
- 用0 +空格包围的冒号(\d+)
- 第3组(" num3"):1个或多个数字请参阅regex demo。