【发布时间】:2021-09-01 02:56:19
【问题描述】:
我有一个这样的 txt 文件:
Io sottoscritto/a __NOME__
nato a __CITTA_NASCITA__(__SIGLA_CITTA_NASCITA__) il __DATA_NASCITA__
residente a __RESIDENZA__ in via __VIA_RESIDENZA__ n __NUMERO_RESIDENZA__.
我必须确保当用户加载相关文件时,会创建一个数组,其中包含所有以 __ 开头并以 __ 结尾的单词,类型为 __NAME__
我设法做到了这个问题,正则表达式也找到了我以下单词:["__CITTA_NASCITA__(__SIGLA_CITTA_NASCITA__)", "__NUMERO_RESIDENZA__."]
在第一种情况下,两个词必须分开。
第二种情况一定没有终点。
结果:
["__CITTA_NASCITA__", "__SIGLA_CITTA_NASCITA__", "__NUMERO_RESIDENZA__"]
你能告诉我哪里错了吗?
链接:https://codesandbox.io/s/lively-butterfly-ey8og?file=/src/App.js
export default function App() {
const showFile = async (e) => {
e.preventDefault();
const reader = new FileReader();
reader.onload = async (e) => {
const text = e.target.result;
const row = text.split("\n");
let array = [];
row.map((el) =>
el.split(" ").map((ul) => {
var reg = /^__[A-Za-z]*__/;
if (reg.test(ul)) {
console.log(ul);
array.push(ul);
}
})
);
console.log(array);
};
reader.readAsText(e.target.files[0]);
};
return (
<div className="App">
<input type="file" onChange={(e) => showFile(e)} />
</div>
);
}
【问题讨论】:
-
你可以匹配文件
__[A-Z]+(?:_[A-Z]+)*__regex101.com/r/oUmIJQ/1中的所有匹配项 -
问题是所有文本都用换行符分割成行,然后每行用空格分割,并且用你的正则表达式检查项目(如果模式匹配整个“token”。标点符号等可以通过这种方式进入结果数组。请参阅我的回答如何解决这个问题。
标签: javascript reactjs regex file