js 将字符串127.0.0.1 9600 1|2按照“%s %d %d|%d”提取字符串
时间: 2024-02-18 11:58:53 浏览: 38
可以使用上面提到的方法,只需要将代码中的 `str` 改为你要提取的字符串即可:
```javascript
const str = "127.0.0.1 9600 1|2";
const regex = /^(\S+)\s+(\d+)\s+(\d+)\|(\d+)$/;
const match = regex.exec(str);
if (match) {
const s = match[1]; // "127.0.0.1"
const d1 = parseInt(match[2]); // 9600
const d2 = parseInt(match[3]); // 1
const d3 = parseInt(match[4]); // 2
console.log(s, d1, d2, d3); // 输出 "127.0.0.1 9600 1 2"
} else {
console.log("No match found");
}
```
上述代码中,正则表达式中的 `\S` 表示匹配任何非空白字符,用于匹配 IP 地址部分。其它部分与之前的代码相同。
相关问题
使用linux命令提取下面字符串中的lastServer的值
假设下面的字符串为:
```
{"name":"test","lastServer":"127.0.0.1","status":"active"}
```
你可以使用 `grep` 和 `sed` 命令来提取 `lastServer` 的值:
```bash
echo '{"name":"test","lastServer":"127.0.0.1","status":"active"}' | grep -o '"lastServer":"[^"]\+"' | sed 's/"lastServer":"\(.*\)"/\1/'
```
运行以上命令后,将输出 `127.0.0.1`。
解释一下上面的命令:
1. `grep -o '"lastServer":"[^"]\+"'` 用于查找字符串中 `"lastServer":"` 开头,紧接着一个或多个非 `"` 字符,最后以 `"` 结尾的部分,其中 `[^"]` 表示匹配除 `"` 以外的任意字符,`\+` 表示匹配一个或多个字符。
2. `sed 's/"lastServer":"\(.*\)"/\1/'` 用于提取 `"lastServer":"` 和 `"` 之间的部分,即 `127.0.0.1`。其中 `\(.*\)` 表示匹配任意字符,`\1` 表示将匹配到的字符输出。
C语言将二位字符数组拼接成字符串通过socket发送到客户端并输出
假设我们有一个二维字符数组matrix,其中包含了若干个字符串,我们想要将这些字符串拼接成一个字符串,并通过socket发送到客户端,并输出。这个问题可以分为两个子问题:将二维字符数组拼接成一个字符串,以及通过socket发送到客户端并输出。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define MAX_LINE 1024
int main(int argc, char *argv[]) {
// 创建socket
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("socket error");
exit(1);
}
// 设置server地址
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8888);
inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);
// 连接server
if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) {
perror("connect error");
exit(1);
}
// 将二维字符数组拼接成一个字符串
char str[MAX_LINE];
memset(str, 0, MAX_LINE);
int i, j, k = 0;
for (i = 0; i < 3; i++) { // 假设二维数组有3行
for (j = 0; j < strlen(matrix[i]); j++) {
str[k++] = matrix[i][j];
}
}
// 发送数据到客户端
if (send(sockfd, str, strlen(str), 0) < 0) {
perror("send error");
exit(1);
}
// 输出数据
printf("send data: %s\n", str);
// 关闭socket
close(sockfd);
return 0;
}
```
在这个示例代码中,我们首先创建了一个socket,并连接到server。然后,我们将二维字符数组拼接成一个字符串,将该字符串通过socket发送到客户端,并输出该字符串。最后,我们关闭了socket。需要注意的是,这个示例代码中仅仅是将字符串发送到客户端,并没有处理客户端的响应。