希望用<option value =“”>本文</option>之间的文本替换选项值=“”

时间:2009-02-26 15:53:54

标签: regex grep

我有这个HTML,我想用value="##"

之间的值替换<option>value</option>中的数值

例如:<option value="16">Accounting</option>,我想知道将其自动更改为<option value="Accounting">Accounting</option>所需的正则表达式

我打算在整个清单上这样做。

<option value="16">Accounting A.A.S.</option>
<option value="15">Accounting A.S.</option>
<option value="33">Art Studies</option>
<option value="18">Business Administration A.A.S.</option>
<option value="17">Business Administration A.S.</option>
<option value="20">Computer Network Technician</option>
<option value="21">Computer Support Specialist</option>
<option value="40">Criminal Justice A.A.S.</option>
<option value="39">Criminal Justice A.S.</option>
<option value="37">Criminal Justice: Corrections Certificate</option>
<option value="41">Criminal Justice: Cybersecurity</option>
<option value="42">Criminal Justice: Economic Crime</option>
<option value="43">Criminal Justice: Forensic Investigation</option>
<option value="34">Early Childhood</option>
<option value="22">Fashion Buying & Merchandising</option>
<option value="35">Fine Arts</option>
<option value="23">Health Services Management A.S.</option>
<option value="24">Health Services Management Technology A.A.S.</option>
<option value="92">Human Resource Management A.A.S.</option>
<option value="44">Human Services</option>
<option value="25">International Business</option>
<option value="36">Liberal Arts & Sciences: Childhood Education</option>
<option value="49">Liberal Arts & Sciences: Communication Arts</option>
<option value="50">Liberal Arts & Sciences: General Studies</option>
<option value="52">Liberal Arts & Sciences: Social Science</option>
<option value="51">Liberal Arts and Sciences: Humanities</option>
<option value="26">Marketing A.A.S.</option>
<option value="27">Medical Coder/Transcriptionist Certificate</option>
<option value="45">Music Industry</option>
<option value="28">Paralegal</option>
<option value="46">Photographic Technology</option>
<option value="47">Radio/Television Broadcasting</option>
<option value="91">Science A.S.</option>
<option value="29">Small Business Management</option>
<option value="30">Small Business Management: Certificate</option>
<option value="48">Teaching Assistant: Certificate</option>
<option value="31">Travel & Tourism: Hospitality & Events Management</option>
<option value="32">Website and E-Business Development</option>

编辑:我想在textwrangler中使用GREP

7 个答案:

答案 0 :(得分:3)

只需删除值属性即可。默认情况下,<option>会获取其内容的值。

<option value="Accounting">Accounting</option>

相当于:

<option>Accounting</option>

编辑:使用sed即可

sed -r s/' value="[0-9]+"'//g

答案 1 :(得分:2)

我认为这意味着你想要:

<option value="14">Foobar</option>

成为:

<option value="Foobar">Foobar</option>

如果是这样,这是Javascript。我假设select变量包含周围的<select>标记DOM元素,例如form.nameOfselect

for ( var option : select.options ) {
   option.value = option.text;
}

答案 2 :(得分:1)

在Linux下:

sed 's|<option value="[^"]*">\([^<>]*\)</option>|<option value="\1">\1</option>|g'

答案 3 :(得分:1)

如果您的HTML格式正确,这将解决问题:

正则表达式:

(?<=<option) value="\d+"

替换为空字符串。

在HTML中,如果没有值属性,选项值将自动回退到显示的文本。

答案 4 :(得分:1)

您已添加了要在文本编辑器中执行操作的内容。我写了一些假设你想要使用php的东西,我会让它站在这里,因为我觉得这很重要。

无论如何,使用 TextWrangler(或任何其他文本编辑器),替换

<option value="[^"]*">([^<]*)</option>

<option value="\1">\1</option>

<小时/> 由于你主要在php标签中活跃,我假设你在php中要求一个解决方案。但是,让我从一个建议开始这个答案:如果你正在寻找一种方法,说明你的目标,而不是你认为合适的技术。 regexps工作,但这在{{3 }}:

$xml = str_replace("&", "&amp;", $xml); // Fix errors in your XML
$doc = simplexml_load_string($xml);
foreach ($doc->xpath("//option") as $o) {
    $o["value"] = "" . $o;
}
$xml = $doc->asXML();

如果您坚持使用正则表达式,则可以这样做:

$xml = preg_replace(
    '#<option value="[^"]*">([^<]*)</option>#',
    '<option value="$1">$1</option>', $xml);

答案 5 :(得分:0)

它可以更通用,但是当选项标签中没有其他属性时它可以工作:

/(.*")([^"]+)(">)([^<]+)(.*)/

然后用以下代码替换捕获的字符串:

$1$4$3$4$5

如果您使用反斜杠作为子组引用字符,请用反斜杠替换美元符号。

提示:http://gskinner.com/RegExr/在线有一个很棒的正则表达式测试人员,请查看!

答案 6 :(得分:0)

我没有对此进行过测试,但我相信这会使用jQuery。

 $('option').each(function(elm) { $(this).val($(this).text()); });