1

我有这个 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

4

7 回答 7

3

只需删除值属性。<option>默认情况下,它的内容取值。

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

相当于:

<option>Accounting</option>

编辑:使用sed你可以做

sed -r s/' value="[0-9]+"'//g
于 2009-02-26T16:01:47.700 回答
2

我认为这意味着你想要:

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

成为:

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

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

for ( var option : select.options ) {
   option.value = option.text;
}
于 2009-02-26T15:59:35.457 回答
1

在 Linux 下:

sed 's|<option value="[^"]*">\([^<>]*\)</option>|<option value="\1">\1</option>|g'
于 2009-02-26T15:59:14.973 回答
1

如果您的 HTML 格式正确,则可以这样做:

正则表达式:

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

替换为空字符串。

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

于 2009-02-26T16:02:31.207 回答
1

您已添加要在文本编辑器中执行该操作。我写了一些假设你想使用 php,我会放在这里,因为我认为它很重要。

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

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

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


由于您主要在 php 标签中活跃,我假设您在 php.ini 中寻求解决方案。但是,让我从一个建议开始这个答案:如果您正在寻找一种方法,请说明您的目标,而不是您认为合适的技术。正则表达式可以工作,但这在simplexml中要容易得多:

$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);
于 2009-02-26T16:17:20.500 回答
0

It can be made a bit more general, but it works when there are no other attributes in the option tag:

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

然后用这个替换捕获的字符串:

$1$4$3$4$5

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

提示:http://gskinner.com/RegExr/ 上有一个很棒的在线正则表达式测试器看看吧!

于 2009-02-26T16:06:44.020 回答
0

我还没有测试过这个,但我相信这会工作,使用 jQuery。

 $('option').each(function(elm) { $(this).val($(this).text()); });
于 2009-02-26T16:18:19.203 回答