我有一个CSV字符串,我试图通过正则表达式验证,以确保它只有N个项目.我尝试了以下模式(寻找2项):
/([^,]+){2}/
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,我猜测因为内在模式不够贪婪.
有任何想法吗?理想情况下,它应该适用于PHP和Javscript正则表达式引擎.
更新:
由于技术原因,我真的想通过正则表达而不是另一种解决方案来做到这一点.未引用CSV且值不包含逗号,因此这不是问题.
/([^,]*[,]{1}[^,]*){1}/
Run Code Online (Sandbox Code Playgroud)
我现在在哪里,哪种工作但仍然有点难看,并且有一个项目匹配的问题.
CSV看起来像:
apples,bananas,pears,oranges,grapefruit
Run Code Online (Sandbox Code Playgroud) 你会认为这个问题之前已被问过,但我找不到它.
我需要用未引用的逗号分隔js字符串.我只使用双引号,这样可以使它更简单一些.
我尝试了两种方法但没有钉它.
我需要转这个:
'body.loaded"who, are , you" div"hello ,"#div-id span CODE, body.loaded span"span, text" code'
Run Code Online (Sandbox Code Playgroud)
进入这个:
[
'body.loaded"who, are , you" div"hello ,"#div-id span CODE',
'body.loaded span"span, text" code'
]
Run Code Online (Sandbox Code Playgroud)
1) - >匹配好的部分,这些部分主要起作用,但在我的结果中给了我很多空字符串.
'body.loaded"who, are , you" div"hello ,"#div-id span CODE, body.loaded span"span, text" code'.match(
/([^,]*"[^"]*")*/g
)
['body.loaded"who, are , you" div"hello' ,'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ' body.loaded span"span, text"', '', '', '', '', …Run Code Online (Sandbox Code Playgroud) 我有一个用作数据源的 CSV。我需要将换行符 ('\n') 上的行拆分为一个名为 'lines' 的变量,我需要将每行中以分号 (';') 分隔的值拆分为一个名为 'items' 的变量.
我希望能够检查一行上的第一个值,如果它等于输入框中的输入值,我想将此行(在值之间使用分号分隔符)添加到名为 newData 的新变量中。如果它不等于输入框中的值,我想排除它。
我基本上想过滤掉第一个值不等于我正在搜索的值的每一行。
以下是数据示例(假设每行后有一个换行符 ('\n')):
"ID";"Date";"Time";"Status"
"1";"2013.01.01";"10:03 AM";"Active"
"1";"2013.01.05";"07:45 AM";"Active"
"2";"2013.01.03";"9:12 PM";"Active"
"2";"2013.01.11";"6:37 AM";"Inactive"
"1";"2013.01.22";"12:57 PM";"Inactive"
Run Code Online (Sandbox Code Playgroud)
我可以拆分第一个标题行,并且不会包含在我正在寻找的结果中。如果我的搜索在 ID 列上并且搜索值为 1,我只想返回 ID 等于 1 的行并希望它匹配上面的格式(无标题行)。相反,如果搜索值为 7,我将只返回无行或仅返回标题行。
到目前为止,我所能做的就是从我正在导入的数据中拆分行(我找到了所有这些代码,我真的不太熟悉 javascript 或 jQuery):
$.get("myFile.csv", function(data) {
data = data.replace(/"/g, "");
var lines = data.split('\n');
var first = lines.shift().split(';');
});
// HTML Input Box
<input id="search_box" type="text">
<button id="btn_search">Search</button>
Run Code Online (Sandbox Code Playgroud)
谢谢。
我希望能够将 CSV 转换为 JSON。csv 以这样的自由文本形式出现(带有换行符):
name,age,booktitle
John,2,Hello World
Mary,3,""Alas, What Can I do?""
Joseph,5,"Waiting, waiting, waiting"
Run Code Online (Sandbox Code Playgroud)
正如你所知道的,我的问题是文件...
我希望输出的每个字段都没有任何前导和尾随引号...如何正确创建从准确表示此 CSV 的 csv 字符串解析出的 JSON 对象?(没有前导和尾随引号)。
我通常使用:
var mycsvstring;
var finalconvertedjson = {};
var headerfields = // get headers here
var lines = mycsvstring.split('\n');
for(var i = 0; i < lines.length; i++) {
// loop through each line and set a key for each header field that corresponds to the appropriate lines[i]
}
Run Code Online (Sandbox Code Playgroud) 我有一个字符串:
'"Apples" AND "Bananas" OR "Gala Melon"'
Run Code Online (Sandbox Code Playgroud)
我想将其转换为数组
arr = ['"Apples"', 'AND', '"Bananas"', 'OR', '"Gala Melon"']
Run Code Online (Sandbox Code Playgroud)
我不知道我是否可以用正则表达式来做.我开始认为我可能必须一次解析每个字符以匹配双引号.
我有一个看起来像这样的字符串
"a,b,c,"Mozilla/5.0,(compatible;,MSIE,9.0;,Windows,NT,6.1;,Trident/5.0)",d,e"
Run Code Online (Sandbox Code Playgroud)
我试图用","拆分这个字符串,并获取个别值.现在,它的作用是,它分割部分"Mozilla/5.0,(兼容;,MSIE,9.0;,Windows,NT,6.1;,Trident/5.0)",我也得到了这个作为最终结果
["a", "b", "c", ""Mozilla/5.0", "(compatible;", "MSIE", "9.0;", "Windows", "NT", "6.1;", "Trident/5.0)"", "d", "e"]
Run Code Online (Sandbox Code Playgroud)
有没有办法让它不拆分子串?基本上我试图在拆分后得到这个
["a", "b", "c", "Mozilla/5.0,(compatible;,MSIE,9.0;,Windows,NT,6.1;,Trident/5.0)", "d", "e"]
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个可以从CSV文件中提取单个字段的正则表达式.
例如,如果在CSV文件中给出以下行:
123, Bob ,Bob, " Foo Bar ", "a, ""b"", c"
Run Code Online (Sandbox Code Playgroud)
应该给下面的结果(无的单引号):
'123'
'Bob'
'Bob'
' Foo Bar '
'a, "b", c'
Run Code Online (Sandbox Code Playgroud)
请注意,除非它们在引号内,否则应修剪前导和尾随空格.
我并不担心无效的CSV行,例如没有匹配收盘价的开盘价.根据上述规则,您可以放心地假设CSV文件完全有效.
如果单个Regex有困难,我也可以使用多个正则表达式.但我喜欢避免使用标准的C#操作,除非它们简单而简短.(我不想最终编写大量代码.)
那么,有什么建议吗?
我正在尝试编写正则表达式将字符串拆分为数组.它必须使用空格或逗号的分隔符进行拆分,并忽略引用短语内的分隔符(使用单引号或双引号).
到目前为止,我能够通过空格和逗号分隔它,但是我无法让它在引号之间忽略它们而我已经丢失了.
var pattern = /\b\w+[^"', ]+(?!'")/g,
text = "Hello world \"Boston Red Sox\" hello, world, \'boston, red sox\', \'beached whale\', pickup sticks",
output = text.match(pattern);
Run Code Online (Sandbox Code Playgroud)
当前输出:
["Hello", "world", "Boston", "Red", "Sox", "hello", "world", "boston", "red", "sox", "beached", "whale", "pickup", "sticks"]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
["Hello", "world", "Boston Red Sox", "hello", "world", "boston, red sox", "beached whale", "pickup", "sticks"]
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒!