我正在阅读Perl中的文件,我想根据两个分隔符拆分值。
col1 col2
uc011nbb.2 NM_001039567
uc004fuo.4 NM_001006120
uc011nbc.2 NM_001006121
uc010nwz.3 NM_001006121
col 1和col2由制表符分隔,所以我通常使用它:
my @cols = split(/\t/);
但是,我想将col1拆分为'。'。如何修改我的分割功能?
答案 0 :(得分:6)
您可以使用character class
对两种可能性进行编码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
<title>phpMyAdmin</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="phpmyadmin.css.php?token=9775ad90f6ea663e0dca57d06ea7829a&js_frame=right&nocache=4099247312" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
<script type="text/javascript">
try {
// can't access this if on a different domain
var topdomain = top.document.domain;
// double-check just for sure
if (topdomain != self.document.domain) {
alert("Redirecting...");
top.location.replace(self.document.URL.substring(0, self.document.URL.lastIndexOf("/")+1));
}
}
catch(e) {
alert("Redirecting... (error: " + e);
top.location.replace(self.document.URL.substring(0, self.document.URL.lastIndexOf("/")+1));
}
</script>
<script type="text/javascript">
// <![CDATA[
// Updates the title of the frameset if possible (ns4 does not allow this)
if (typeof(parent.document) != 'undefined' && typeof(parent.document) != 'unknown'
&& typeof(parent.document.title) == 'string') {
parent.document.title = '68.178.140.77 / dilorg / wp_events_answer';
}
// ]]>
</script>
<script src="./js/tooltip.js" type="text/javascript"></script>
<meta name="OBGZip" content="true" />
<!--[if IE 6]>
<style type="text/css">
/* <![CDATA[ */
html {
overflow-y: scroll;
}
/* ]]> */
</style>
<![endif]-->
</head>
<body>
<div id="TooltipContainer" onmouseover="holdTooltip();" onmouseout="swapTooltip('default');"></div>
<div id="serverinfo">
<a href="main.php?token=9775ad90f6ea663e0dca57d06ea7829a" class="item"> <img class="icon" src="./themes/original/img/s_host.png" width="16" height="16" alt="" />
Server: 68.178.140.77</a>
<span class="separator"><img class="icon" src="./themes/original/img/item_ltr.png" width="5" height="9" alt="-" /></span>
<a href="db_structure.php?db=dilorg&token=9775ad90f6ea663e0dca57d06ea7829a" class="item"> <img class="icon" src="./themes/original/img/s_db.png" width="16" height="16" alt="" />
Database: dilorg</a>
<!-- PMA-SQL-ERROR -->
<div class="error"><h1>Error</h1>
<p><strong>SQL query:</strong>
<a href="tbl_sql.php?db=dilorg&table=wp_events_answer&token=9775ad90f6ea663e0dca57d06ea7829a&sql_query=SHOW+TABLE+STATUS+LIKE+%27wp_events_answer%27%3B&show_query=1"><img class="icon" src=" ./themes/original/img/b_edit.png" width="16" height="16" alt="Edit" /></a> </p>
<p>
<span class="syntax"><span class="syntax_alpha syntax_alpha_reservedWord">SHOW</span> <span class="syntax_alpha syntax_alpha_reservedWord">TABLE</span> <span class="syntax_alpha syntax_alpha_reservedWord">STATUS</span> <span class="syntax_alpha syntax_alpha_reservedWord">LIKE</span> <span class="syntax_quote syntax_quote_single">'wp_events_answer'</span><span class="syntax_punct syntax_punct_queryend">;</span><br /><br /></span>
</p>
<p>
<strong>MySQL said: </strong><a href="http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html" target="mysql_doc"><img class="icon" src="./themes/original/img/b_help.png" width="11" height="11" alt="Documentation" title="Documentation" /></a>
</p>
<code>
#2006 - MySQL server has gone away
</code><br />
</div><fieldset class="tblFooters"> </fieldset>
<script type="text/javascript">
//<![CDATA[
// updates current settings
if (window.parent.setAll) {
window.parent.setAll('en-utf-8', 'utf8_unicode_ci', '1', 'dilorg', 'wp_events_answer', '9775ad90f6ea663e0dca57d06ea7829a');
}
// set current db, table and sql query in the querywindow
if (window.parent.reload_querywindow) {
window.parent.reload_querywindow(
'dilorg',
'wp_events_answer',
'');
}
if (window.parent.frame_content) {
// reset content frame name, as querywindow needs to set a unique name
// before submitting form data, and navigation frame needs the original name
if (typeof(window.parent.frame_content.name) != 'undefined'
&& window.parent.frame_content.name != 'frame_content') {
window.parent.frame_content.name = 'frame_content';
}
if (typeof(window.parent.frame_content.id) != 'undefined'
&& window.parent.frame_content.id != 'frame_content') {
window.parent.frame_content.id = 'frame_content';
}
//window.parent.frame_content.setAttribute('name', 'frame_content');
//window.parent.frame_content.setAttribute('id', 'frame_content');
}
//]]>
</script>
</body>
</html>
正如@Sobrique上面所说,在将split /[.\t]/;
用作分隔符之前,应确保.
不会出现在任何列名中。
示例:
say foreach split /[.\t]/, "this is some.text that has\ttwo delimiters";
this is some
text that has
two delimiters